双向关联与继承映射.ppt

上传人:xt****7 文档编号:2384861 上传时间:2019-11-22 格式:PPT 页数:31 大小:2.10MB
返回 下载 相关 举报
双向关联与继承映射.ppt_第1页
第1页 / 共31页
双向关联与继承映射.ppt_第2页
第2页 / 共31页
双向关联与继承映射.ppt_第3页
第3页 / 共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 表,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!