Hibernate(八)映射一对一关联关系
一、基于外键映射的 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(八)映射一对一关联关系