Hibernate关系映射2:双向1-N关联.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate关系映射2:双向1-N关联

Hibernate关系映射2:双向1-N关联 我最近在复习⼀下关于Hibernate关系映射的知识,看了书本的介绍以及视频。这⼏篇 客都是对学到知识的⼀点总结。当然,这些这是最基本的能够实现关联关系的配 置,在实际的使⽤中,还有很多参数需要根据情况来设置。但也算是对以后开发过程 中遇到遗忘的地⽅可以进⾏查阅。 在本⽂中使⽤的Demo也都已经上传到github 中,⾥边有详细的运⾏说明。Github地 址:HibernateRelationMapping 双向1-N关联 对于1-N关联,Hibernate推荐使⽤双向关联,⽽且不要让1的⼀端控制关联关系,⽽使 ⽤N 的⼀端控制关联关系。 双向的N-1关联与1-N关联是完全相同的两种情形。两端都需要增加对关联属性的访 问,N 的⼀端增加引⽤到关联实体的属性,1的⼀端增加集合属性,集合元素为关联实 体。 域模型 从 Order 到 Customer 的多对⼀双向关联需要在Order 类中定义⼀个 Customer 属性, ⽽ 在 Customer 类中需定义存放 Order 对象的集合属性 关系数据模型 ORDERS 表中的 CUS OMER_ID 参照 CUS OMER 表的主键 Notice 当Session从数据库中加载Java集合时,创建的是Hibernate 内置集合类的实例,因此, 在持久化类中定义集合属性时,必须把属性声明为Java接⼜ Hibernate的内置集合类具有集合代理功能,⽀持延迟检索策略 事实上,Hibernate的内置集合类封装了JDK 中的集合类,这使得Hibernate能够 对缓存中的集合对象进⾏脏检查,按照集合对象的状态来同步更新数据库。 在定义集合属性时,通常把它初始化为集合实现类的⼀个实例,这样可以提⾼程序的 健壮性,避免应⽤程序访问取值为null的集合的⽅法。 例如:private SetOrder orders = new HashSetOrder(); Demo 实体对象 public class Customer { private Inte er customerId; private Strin customerName; private SetOrder orders = new HashSetOrder(); //省去 et和set } public class Order { private Inte er orderId; private Strin orderName; private Customer customer; //省去 et和set } Customer.hbm.xml hibernate-mappin packa e=com.lihui.hibernate.double_n_1 class name=Customer table=CUSTOMERS id name=customerId type=java.lan .Inte er column name=CUSTOMER_ID / enerator class=native / /id property name=customerName type=java.lan .Strin column name=CUSTOMER_NAME / /property set name=orders inverse=true key column=CUSTOMER_ID/key one-to-many class=Order/ /set /class /hibernate-mappin set name属性: 设定待映射的持久化类的属性的 inverse 属性: 在hibernate 中通过对 inverse 属性的来决定是由双向关联的哪⼀⽅来维护表和表 之间的关系。 inverse = false 的为主动⽅,inverse = true 的为被动⽅, 由主动⽅ 负责维护关联关系。在没有设置 inverse=true 的情况下,⽗⼦两边都维护⽗⼦关

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档