hibernate多表关系

一对一主键:单向和双向

一.  单向一对一主键(一个对象中存在另一个对象的引用,只能从一个对象找另一个对象,不能反过来),两个是独立的对象,及时加了级联也是两个对立的对象,只是一方根据级联的取值看着另一个对象做相应的动作.

(1)建立两个entity,IDCard这个类中有per对象

hibernate多表关系_第1张图片
hibernate多表关系_第2张图片
hibernate多表关系_第3张图片

(2)在entity中建立一个test,调用工具类的方法自动生成xml文件,这里和表还没有关系,表是在持久化中和数据库中的表绑定的,也就是只有在运行持久化的时候才会出现表.

hibernate多表关系_第4张图片
自动生成xml后,这两个对象是没有关系的,

(3)找到idCard.hbm.xml中下面的属性

hibernate多表关系_第5张图片

更改为

hibernate多表关系_第6张图片
加了级联两个对象依旧是独立的两个对象,也就是生成表后是两个独立的表,;但是idCard做增删改,per也做增删改

(4)测试类

hibernate多表关系_第7张图片

二,双向一对一主键(两个对象互相能找到):在上面的例子单向一对一的基础上,直接在per的entity中添加一个对象属性,在xml中添加one to one 属性.

(1)entity中

hibernate多表关系_第8张图片
人找身份证


hibernate多表关系_第9张图片
身份证找人

(2)配置文件中代码

idCard中的代码


per中的代码
hibernate多表关系_第10张图片

一对一外键(两个表绑定到了一起):单向和双向

直接在配置文件中修改

hibernate多表关系_第11张图片
idCard中的代码,现在只有一个表所以lazy没有效果,如果表比较多一定奥设置

idCard外键产生了一个外键

hibernate多表关系_第12张图片
此处是在配置中column没有写所以默认是和name的值一样所以是per,是可以设置的
hibernate多表关系_第13张图片
测试增加代码不能有id
hibernate多表关系_第14张图片
修改的时候一定要有id

你可能感兴趣的:(hibernate多表关系)