双向关联与继承映射.ppt
《双向关联与继承映射.ppt》由会员分享,可在线阅读,更多相关《双向关联与继承映射.ppt(31页珍藏版)》请在装配图网上搜索。
双向关联与继承映射,Hibernate的关联映射,双向1-N关联 对于1-N关联,Hibernate推荐使用双向关联,而且不要让1的一端控制关联关系,而使用N的一端控制关联关系。 双向两端都需要增加对类关联属性的访问,N的一端增加引用到关联实体的属性,1的一端增加集合属性,并使用映射关联属性。 注意:inverse=“true”用于指定N的另一端不控制关联关系。,Person.java,public class Person private int personid; private String name; /保留Person的age属性 private int age; /1N关联关系,使用Set来保存关联实体 private Set addresses = new HashSet(); /addresses属性的setter和getter方法 public void setAddresses(Set addresses) this.addresses = addresses; public Set getAddresses() return this.addresses; ,Address.java,public class Address /标识属性 private int addressid; /地址详细信息 private String addressdetail; /保留关联实体的person属性 private Person person; /person属性的setter和getter方法 public void setPerson(Person person) this.person = person; public Person getPerson() return this.person; ,Person.hbm.xml,Address.hbm.xml,PersonManager.java,private void testPerson() Person p = new Person(); p.setName(“Yeeku“); p.setAge(29); /持久化Person对象(对应于插入主表记录) session.save(p); Address a = new Address(“广州天河“); /先设置Person和Address之间的关联关系 a.setPerson(p); /再持久化Address对象(对应于插入从表记录) session.persist(a); /创建一个瞬态的Address对象 Address a2 = new Address(“上海虹口“); /先设置Person和Address之间的关联关系 a2.setPerson(p); /再持久化Address对象(对应于插入从表记录) session.persist(a2); mit(); HibernateUtil.closeSession(); ,Hibernate的关联映射,双向N-N关联 双向N-N只能使用连接表来建立两个实体之间的关联关系。 两端都使用Set集合来增加对集合属性的访问。 增加元素来映射关联实体类。,Person.java,public class Person private int personid; private String name; private int age; /NN关联关系,使用Set来保存关联实体 private Set addresses = new HashSet(); ,Address.java,public class Address private int addressid; private String addressdetail; /NN关联关系,使用Set来保存关联实体 private Set persons = new HashSet(); ,Person.hbm.xml,Address.hbm.xml,继承映射概述,三种策略 采用subclass元素的继承映射 所有继承关系生成一个表 采用joined-subclass元素的继承映射 一条记录被拆分到多个表中 采用union-subclass元素的继承映射 每个实体都单独成为一个表,示例代码,4个实体,采用union-subclass元素的继承映射 域模型中的每个类映射到一个表, 通过关系数据模型中的外键来描述表之间的继承关系。 相当于按照域模型的结构来建立数据库中的表,并通过外键来建立表之间的继承关系。,映射文件person.hbm.xml,映射文件person.hbm.xml,映射文件person.hbm.xml,运行结果,采用subclass元素的继承映射 所有继承关系生成一个表,表结构,采用joined-subclass元素的继承映射 一条记录被拆分到多个表中,采用 joined-subclass 元素的继承映射,采用 joined-subclass 元素的继承映射可以实现每个子类一张表 采用这种映射策略时,父类实例保存在父类表中,子类实例由父类表和子类表共同存储。因为子类实例也是一个特殊的父类实例,因此必然也包含了父类实例的属性。于是将子类和父类共有的属性保存在父类表中,子类增加的属性,则保存在子类表中。 在这种映射策略下,无须使用鉴别者列,但需要为每个子类使用 key 元素映射共有主键。 子类增加的属性可以添加非空约束。因为子类的属性和父类的属性没有保存在同一个表中,persons 表,students 表,- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双向 关联 继承 映射
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文