Hibernate之关系映射OneToOne

OneToOne单向

实体类

one
Hibernate之关系映射OneToOne_第1张图片
one 维护关系

映射文件

Hibernate之关系映射OneToOne_第2张图片
one
Hibernate之关系映射OneToOne_第3张图片
one维护关系

测试add

Hibernate之关系映射OneToOne_第4张图片
add

添加成功。

Hibernate之关系映射OneToOne_第5张图片
add

上述add:

如果person有对应的卡,再次添加卡的时候违背了unique的关系则会添加出错,

如果person没有对应的卡,则会添加成功。





OneToOne双向:

实体类:

Hibernate之关系映射OneToOne_第6张图片
person
Hibernate之关系映射OneToOne_第7张图片
IDCard

映射文件:

Hibernate之关系映射OneToOne_第8张图片
person
Hibernate之关系映射OneToOne_第9张图片
IDCard

测试add

Hibernate之关系映射OneToOne_第10张图片
add


Hibernate之关系映射OneToOne_第11张图片
add


Hibernate之关系映射OneToOne_第12张图片
load

此时会发出一条sql语句。

由于person端没有维护关系,hibernate会自动完成jion操纵,只发出一条sql语句

Hibernate之关系映射OneToOne_第13张图片
load

此时会发出三条sql语句。

因为维护关系的那一端会延迟加载。使用维护关系端取数据,在通过延迟加载取关联对象的时候,会同时 再去取原来的关联端,会发三条语句。

最佳实践是:

在one2one的时候,最好不要使用双向关联,

但是如果使用了双相关联,在取数据的时候,最好使用没有关联的那一方。

你可能感兴趣的:(Hibernate之关系映射OneToOne)