Hibernate 组件关联关系

实体关联的属性是个复杂类型的持久化类,但不是实体:数据库中没有表与该属性对应。需要将该属性的子属性保存到当前实体对应的表中。

Citizen类:

public class Citizen {
private Integer id;
private String name;
private Address address;
public Citizen() {
}
public Citizen(String name, Address address) {
this.name = name;
this.address = address;
}
// Getters and setters are omitted
}


Address类:

public class Address {
private String province;
private String city;
private String district;
public Address() {
}
public Address(String province, String city, String district) {
this.province = province;
this.city = city;
this.district = district;
}
// Getters and setters are omitted
}


Citizen.hbm.xml:

<hibernate-mapping package="com.john.myhibernate.domain">
<class name="Citizen" table="citizen">
<id name="id">
<generator class="native"/>
</id>
<property name="name" length="28" not-null="true" />
<component name="address">
<property name="province"/>
<property name="city"/>
<property name="district"/>
</component>
</class>
</hibernate-mapping>


测试保存:

public void testSave() {
Session s = null;
Transaction tx = null;

Address address = new Address("Zhejiang", "Hangzhou", "Binjiang");
Citizen citizen = new Citizen("Tremendously", address);

try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(citizen);
tx.commit();
} catch (HibernateException e) {
if (tx != null)
tx.rollback();
e.printStackTrace();
} finally {
if (s != null)
s.close();
}
}


数据库记录:
[table]
| id | name | province | city | district |
| 1 | Tremendously | Zhejiang | Hangzhou | Binjiang |
[/table]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值