- 1、本文档共80页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
五、关系映射讲述
第五部分 关系映射 映射一对多关联关系 一对多关联关系 单项关联:仅仅建立从Order到Customer的多对一关联,即仅仅在Order类中定义customer属性。或者仅仅建立从Customer到Order的一对多关联,即仅仅在Customer类中定义orders集合。 双项关联:既建立从Order到Customer的多对一关联,又建立从Customer到Order的一对多关联。 建立多对一的单向关联关系 单向 n-1 关联只需从 n 的一端可以访问 1 的一端 域模型: 从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中无需定义存放 Order 对象的集合属性 关系数据模型:ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMERS 表的主键 建立多对一的单向关联关系 建立多对一的单向关联关系 建立多对一的单向关联关系 建立多对一的单向关联关系 建立多对一的单向关联关系 建立多对一的单向关联关系 建立一对多的双向关联关系 双向 1-n 与 双向 n-1 是完全相同的两种情形 双向 1-n 需要在 1 的一端可以访问 n 的一端, 反之依然. 域模型:从 Order 到 Customer 的多对一单向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中需定义存放 Order 对象的集合属性 关系数据模型:ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的主键 建立一对多的双向关联关系 映射一对多关联关系 Hibernate要求在持久化类中定义集合属性时,必须把属性声明为接口类型,如Set、Map、List.声明为接口类型可提高持久化类的透明性,当hibernate调用setOrders()方法时,传递的参数是Hibernate自定义的实现该接口类的实例。如果定义成类(如HashSet)型,强迫hibernate把该类型的实例传给他。 底层代码: SetE orders= PersistentSet class PersistentSet implements java.util.Set 通常在定义集合属性时,直接初始化为一个实现类的实例。 private Set orders = new HashSet(); 可避免空指针异常。 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 知识点7:级联保存和更新 当hibernate持久化一个临时对象时,在默认情况下,他不会自动持久化所关联的其他临时对象,会抛出TransientObjectException.如果设定set元素的cascade属性为save-update的话,可实现自动持久化所关联的对象。 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 在hibernate中通过对 inverse 属性的值决定是由双向关联的哪一方来维护表和表之间的关系. inverse=false 的为主动方,inverse=true 的为被动方, 由主动方负责维护关联关系 在没有设置 inverse=true 的情况下,父子两边都维护父子关系 在 1-n 关系中,将 n 方设为主控方将有助于性能改善(如果要国家元首记住全国人民的名字,不是太可能,但要让全国人民知道国家元首,就容易的多) 在 1-N 关系中,若将 1 方设为主控方 会额外多出 update 语句。 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 建立一对多的双向关联关系 知识点12:解除关联关系 建立一对多的双向关联关系 知识点13:级联删除删除1号客户的同时,删除1号客户所关联的订单 建立一对多的双向关联关系 知识点14:理解什么是父子关系 建立一对多的双向关联关系 知识点14:解除关联关系 ---父子关系 解除6号订单和3号客户的关联,同时删除6号订单 建立一对多的双向关联关系 知识点14:解除关联关系 ---父子关系 cascade 属性 在对象 – 关系映射文件中, 用于映射持久化类之间关联关系的元素, set, many-to-one 和 one-to-one 都有一个 cascade 属性, 它用于指定如何操纵与当前对象关联的其他对象. 建立一对多的双向关联关系 set 元素有一个 order-
文档评论(0)