Hibernate一对一关联学习经验

有两个类,Person和User,分别表示人员和用户,它们之间是一对一的关系,一个人员对应于一个用户。要求既可以通过Person找到对应的User,也可以通过User找到对应的Person。这是一种很常见的一对一双向关联。

在Hibernate中实现一对一双向关联有两种方式,一种是主键关联,即两个表共享一个主键,另一种是双向关联,即在一个表中增加一个外键字段,参照另一个表的主键。

1、一对一双向主键关联

这种方式只需要在Person和User的映射文件当中分别配置一对一标签指向对方即可

在Person.hbm.xml中:

<one-to-one name="user"/>

在User.hbm.xml中:

<one-to-one name="person"/>

这样,通过映射文件,在数据库中生成表的时候,不会增加额外的外键字段,而是两个表共享一个主键,加载的时候通过主键加载

2、一对一双向外键关联

这种方式是在一端配置多对一关联,指定外键具有唯一约束,在另一端配置一对一关联,指定加载对方的时候是通过外键加载,而不是通过主键加载

在Person.hbm.xml中:

<many-to-one name="user" unique="true"/>

在User.hbm.xml中:

<one-to-one name="person" property-ref="user"/>

这样,在数据库中生成表的时候,会在person表中增加一个名为"user"的外键字段,存储与之对应的User的id,通过Person对象加载User对象的时候,就通过这个外键字段加载,而通过User对象加载Person对象的时候,会到person表中去寻找字段"user"的值等于User对象的id的记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值