Hibernate(八)映射一对一关联关系

作者 : 开心源码 本文共803个字,预计阅读时间需要3分钟 发布时间: 2022-05-11 共76人阅读

一、基于外键映射的 1-1

(1)对于基于外键的1-1关联,其外键能存放在任意一边,在需要存放外键一端,添加many-to-one元素。为many-to-one元素添加unique=“true” 属性来表示为1-1关联

(2)另一端需要用one-to-one元素,该元素用 property-ref 属性指定用被关联实体主键以外的字段作为关联字段

二、案例

(1)创立实体对象

(2)创立映射文件

(3)在hibernate.cfg.xml文件指定关联的.hbm.xml文件

(4)生成表

(5)表的结构如下

department表

有一个外键束缚和一个唯一束缚的索引

外键

manager表

(6)保存操作

调换一下保存的顺序,会多出一条update的语句,起因跟之前的一样,所以还是先保存没有外键列的那个对象比较好

(7)查询操作

不用 property-ref 属性的 sql

(8)在查询没有外键的实体对象时,用的左外连接查询,一并查询出其关联的对象,并已经进行初始化

三、基于主键映射的 1-1

基于主键的映射策略:指一端的主键生成器用 foreign 策略,表明根据”对方”的主键来生成自己的主键,自己并不可以独立生成主键,<param>子元素指定用当前持久化类的哪个属性作为 “对方”。

采使用foreign主键生成器策略的一端添加 one-to-one 元素映射关联属性,其one-to-one属性还应添加 constrained=“true” 属性;另一端添加one-to-one元素映射关联属性。

constrained(束缚):指定为当前持久化类对应的数据库表的主键增加一个外键束缚,引使用被关联的对象(“对方”)所对应的数据库表主键。

四、案例

(1)实体跟上一个案例一样

(2)对象关系映射文件如下

(3)指定关联的映射文件

(4)不论先保存哪个对象,最后执行的sql都是先插入没有外键束缚的对象

(5)department表有个外键束缚

(6)查询,这里的是正确的

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Hibernate(八)映射一对一关联关系

发表回复