Hibernate读书笔记-----Hibernate的关联映射之组件属性关联关系

先看User持久化类:

public class Users { private int id; private Date birthday; private Name name; public int getId() { return id; } public void setId(int id) { this.id = id; } public Date getBirthday() { return birthday; } public void setBirthday(Date birhday) { this.birthday = birhday; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } }


User持久化类中可以看到name不再是一个简单的String,而是一个类。在这里name就是一个组件属性,在name类中可以包含基本数据类型、字符型、日期型甚至是组件和关联实体。从User持久化类中我们看不出name是关联实体还是普通的组件属性。但是如果我们将Name映射成持久化实体,那么Name就是关联实体,如果不映射成持久化类,那么就是组件属性。这里我们不将Name映射成持久化类。

Name类如下:

public class Name { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } }

为了映射User类中的Name组件,映射文件中使用<component.../>元素来映射该主键元素。映射文件如下:

User.hbm.xml

<hibernate-mapping package="com.hibernate.domain"> <class name="Users"> <id name="id"> <generator class="native" /> </id> <property name="birthday" /> <!-- 映射组件元素 --> <component name="name"> <!-- 映射组件的name属性指向包含实体 --> <property name="firstName" column="first_name"/> <property name="lastName" column="last_name"/> </component> </class> </hibernate-mapping>


操作类如下:

public class UserManager { public static void main(String[] args) { Session session = HibernateUtil.getSession(); Transaction tx = session.beginTransaction(); Users users = new Users(); users.setBirthday(new Date()); Name name = new Name(); name.setFirstName("first name"); name.setLastName("last name"); users.setName(name); session.save(users); tx.commit(); session.close(); } }

读李刚《轻量级JavaEE 企业应用实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值