hibernate级联之一对一单双向剖析(一)

2014-11-24 10:55:37 · 作者: · 浏览: 2
1.知识点概述
true
true
关联关系包括多样性和方向性的关联。映射关联关系就是把对象模型中类之间的关联关系映射成关系模型中数据库表之间的外键引用关系。
2. 一对一关系
单向一对一:(公民与身份证)
方式一:基于唯一外键
Citizen.hbm.xml
类似于多对一的关系书写,最重要的是unique=“true”这句话,来指明关系为一对一。
方式二:基于主键
Citizen.hbm.xml:
idCard
….
基于主键的比较繁琐一些,具体就是以上写法,某一类的主键同时是另一个类的外键. constrained=“true”,这个意思是是否显示参照语句,一般是创建表的时候是否写出外键的参照语句,true为真即写出.
[html] view plaincopy
双向一对一:(公民与身份证)
基于唯一外键的一对一关联
其外键可以放在任意一端,在需要存放外键的一端,使用many-to-one元素,添加unqiue=true;没有存放外键的那一端需要使用one-to-one元素,此时还需要通过property-ref属性来指定这一端只是关联另一端,不需要额外的列或外键,由hibernate管理这个关系。
Citizen.hbm.xml
IDCard.hbm.xml
基于主键
一端的主键使用foreign策略来参照另一端的主键来生成。这样两端就具有相同的主键值。
3. 案例分析
1)单向一对一:(公民与身份证)
方式一:基于唯一外键
Citizen.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
IdCard.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
方式一:基于主键
Citizen.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
idCard
IdCard.hbm.xml与基于外键的一样,同样都是一般情况,没有特殊
2).双一对一:(公民与身份证)
方式一:基于唯一外键
Citizen.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
IdCard.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
方式一:基于主键
Citizen.hbm.xml
< xml version="1.0" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
idCard
IdCard.hbm.xml