Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One]
1、One To One 单相
背景:
古代一个老婆 只能关联一个老公
husband.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
package
com.rhythmk.model; public class husband { public
Integer getHusbandId() { return
husbandId; } public
void setHusbandId(Integer husbandId) { this .husbandId = husbandId; } public
String getName() { return
Name; } public
void setName(String name) { Name = name; } private
Integer husbandId; private
String Name; } |
hasband.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model"> <class name="husband" table="t_husband"> <id name="husbandId" type="int"> <column name="husbandId" /> <generator class="native" /> </id> <property name="Name" type="string"> </property> </class> </hibernate-mapping>
wife.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 |
package
com.rhythmk.model; public class wife { private
Integer wifeId; private
String name; public
Integer getWifeId() { return
wifeId; } public
void setWifeId(Integer wifeId) { this .wifeId = wifeId; } public
String getName() { return
name; } public
void setName(String name) { this .name = name; } public
husband getHb() { return
hb; } public
void setHb(husband hb) { this .hb = hb; } private
husband hb; @Override public
String toString() { return
"wife [wifeId=" + wifeId + ", name="
+ name + ", hb="
+ hb + "]" ; } } |
wife.hbm.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.rhythmk.model"> <class name="wife" table="t_wife"> <id name="wifeId" type="int"> <column name="wifeId" /> <generator class="native" /> </id> <property name="Name" type="string"> </property> <!-- one to one 类似于 one to many 只需要添加 unique =true 即可 --> <many-to-one name="hb" column="husbandId" ></many-to-one> </class> </hibernate-mapping>
注意:
one to one 类似于 one to many 只需要添加 unique =true 即可
2、One To One 双向
跟单相查不多 就是两边都配上 many to one
调整 hasband.hbm.xml 添加:
<!-- one to one 类似于 one to many 只需要添加 unique =true 即可 --> <many-to-one name="mywife" column="wifeId" ></many-to-one>
调整 husband.java :
1
2
3
4
5
6
7 |
public wife getMywife() { return
mywife; } public void setMywife(wife mywife) { this .mywife = mywife; } private
wife mywife; |
测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 |
@Test public void test02_add() { Session session = null ; try
{ session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); husband hb = new
husband(); hb.setName( "王大1" ); wife w = new
wife(); w.setName( "张妞 2" ); w.setHb(hb); hb.setMywife(w); session.save(hb); session.save(w); System.out.println(w.toString()); session.getTransaction().commit(); } catch
(Exception e) { e.printStackTrace(); } finally
{ if
(session != null ) session.close(); } } |
输出:
Hibernate: insert into t_husband (Name, wifeId) values (?, ?)
Hibernate:
insert into t_wife (Name, husbandId) values (?, ?)
wife [wifeId=6, name=张妞 2,
hb=com.rhythmk.model.husband@8b677f]
Hibernate: update t_husband set Name=?,
wifeId=? where husbandId=?
Rhythmk 学习 Hibernate 05 - Hibernate 表间关系 [One To One],古老的榕树,5-wow.com
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。