Hibernate入门实例——组件(component)
来源:互联网 发布:网络病毒大规模爆发 编辑:程序博客网 时间:2024/04/19 18:34
Component是一个被包含的对象,它作为值类型被持久化,而非一个被引用的实体。“component(组件)”这一术语指的是面向对象的合成概念(而并不是系统构架层次上的组件的概念)。
配置方法:在<class>标签中加入如下标签:
<component name="组件类名">
<property name="属性名1" />
<property name="属性名2" />
<property name="属性名3" />
</component>
举个例子, 你可以对人员(User)如以下这样来建模:
package com.metis.hibernate.domain;public class User {private Long id;private Name name;private int age;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public Name getName() {return name;}public void setName(Name name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
将人员名称作为人员的一个组成部分,用一个单独的类Name来表示:
package com.metis.hibernate.domain;public class Name {private String firstName;private String middleName;private String lastName;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getMiddleName() {return middleName;}public void setMiddleName(String middleName) {this.middleName = middleName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}}
以下是User的Hibernate映射文件:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2010-8-29 7:35:06 by Hibernate Tools 3.3.0.GA --><hibernate-mapping> <class name="com.metis.hibernate.domain.User" table="USER"> <id name="id" type="java.lang.Long"> <column name="ID" /> <generator class="native" /> </id> <component name="name" class="com.metis.hibernate.domain.Name" > <property name="firstName" column="FIRST_NAME"/> <property name="middleName" column="MIDDLE_NAME"/> <property name="lastName" column="LAST_NAME"/> </component> <property name="age" type="int"> <column name="AGE" /> </property> </class></hibernate-mapping>
由于Name是User的一个组成部分,两个类共同映射同一个数据库表USER表,USER表中包括ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,AGE五个属性字段。因此Name不需要单独的映射文件。
下面是测试用例:
package com.metis.hibernate.test;import org.hibernate.Session;import com.metis.hibernate.domain.Name;import com.metis.hibernate.domain.User;import com.metis.hibernate.util.HibernateUtil;/** * 组件测试 * 组件是将表中的部分相关字段提取出来,用独立的类来表示。 * 如本例所示,user表中包括ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME,AGE五个属性字段。 * */public class TestComponent {public static void main(String[] args) {Session session = HibernateUtil.openSession();session.beginTransaction();Name name = new Name();name.setFirstName("胡");name.setMiddleName("锦");name.setLastName("涛");User user = new User();user.setName(name);user.setAge(12);session.save(user);session.getTransaction().commit();HibernateUtil.closeSession();}}
数据库表USER脚本:
CREATE TABLE USER(ID BIGINT PRIMARY KEY AUTO_INCREMENT,FIRST_NAME VARCHAR(255),MIDDLE_NAME VARCHAR(255),LAST_NAME VARCHAR(255),AGE INT);
为方便大家学习,本系列文章提供了相关的学习资料和可直接运行的工程源代码:
源代码下载:点击下载
推荐:Hibernate参考手册3.5.3(中文版).pdf
- Hibernate入门实例——组件(component)
- Hibernate入门实例——动态组件(Dynamic components)
- Hibernate从入门到精通(2)-component(组件)
- Hibernate组件(Component)映射
- hibernate 组件(Component)映射
- 浅析Hibernate映射(四)——组件映射(component)
- hibernate参考手册之---组件(Component)映射
- Hibernate之组件映射(embedded component)
- hibernate学习:Component组件
- Hibernate组件属性-component
- React Native——Component(组件)
- 【Bootstrap框架】——组件(Component)
- [JAVA] Hibernate Component组件映射
- 【Hibernate】——Component映射
- Hibernate学习20 -- 关联映射10 -- 组件映射(component)
- Hibernate 、多表关联映射-组件关联映射(component)
- hibernate学习10之component(组件)映射
- Hibernate入门10 - Component 映射
- Winform 使用DotNetBar 实现多种皮肤
- Winform 开发系统整体布局
- C# 数据访问层设计
- 找人帮忙!help!!!
- 软考--操作系统
- Hibernate入门实例——组件(component)
- RedHat Enterprise Linux Server 5.2 替换Yum配置
- Memcache和XAMPP结合在window下实现数据缓冲
- Qt: QPushButton的checkable属性
- Delphi Spring
- 国外类似VeryCD的emule下载网站网址大全
- 企业搜索+电子商务=网络商机?
- 实用Android开发工具和资源精选
- C# 常用方法