映射一对多关联关系

上传人:豆浆 文档编号:49004418 上传时间:2018-07-22 格式:PPT 页数:18 大小:1.75MB
返回 下载 相关 举报
映射一对多关联关系_第1页
第1页 / 共18页
映射一对多关联关系_第2页
第2页 / 共18页
映射一对多关联关系_第3页
第3页 / 共18页
映射一对多关联关系_第4页
第4页 / 共18页
映射一对多关联关系_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《映射一对多关联关系》由会员分享,可在线阅读,更多相关《映射一对多关联关系(18页珍藏版)》请在金锄头文库上搜索。

1、映射一对多关联关系回顾回顾 *.hbm.xml各个元素的作用和常用属性 hibernate的常用内置主键生成器 数据库提供的主键生成机制:identity、sequence 外部程序提供的主键生成机制:increment ,hilo 其它:native,assigned hibernate的映射类型本章目标 理解什么是对象之间的关联关系 掌握一对多关联关系的映射 多对一单向关联 一对多(或多对一)双向关联 一对多(或多对一)双向自身关联 inverse和cascade属性设置本章目标什么是关联什么是关联 关联(association) 关联指的是类之间的引用关系。如果类A与类B关联,那么被引用

2、 的类B将被定义为类A的属性。 public class Aprivate B b = new B;public A() 关联的分类:关联可以分为一对一、一对多、和多对多关联 关联是有方向的持久化对象和临时对象概念持久化对象和临时对象概念 临时对象是指刚通过new关键字创建的对象,在数据库中 没有与此对象对应的记录 持久化对象是指数据库中有与此对象对应的记录的多对一单向关联多对一单向关联 我们以客户(Customer)和订单(Order)的关系为例,分析 一下多(订单)对一(客户)单向关联 一个客户能发出多个订单,而一个订单只能属于一个客户 注意:我们仅仅在Order类中定义了Customer

3、类型的属性 customer,因此这是一个Order类到Customer类的多对一单向 关联如何映射多对一关联关系如何映射多对一关联关系many-to-one元素: name属性:用来保存关联的持久对象的属性的名称 class属性:关联的持久化类的类名 cascade属性:当值为save-update表示保存或更新当前对象时(即执行 insert或update语句时),会级联保存或更新与它关联的对象 元素用来指定查询关联的持久化类的外键(对于关联的持久化 类而言,这个外键的值就是它的主键也就是OID)多对一单向关联映射多对一单向关联映射演示示例: Order到Customer的多对一单向关联映

4、射一对多(或多对一)双向关联一对多(或多对一)双向关联 我们以客户(Customer)和订单(Order)的关系为例,分析 一下多(订单)对一(客户)单向关联 一个客户能发出多个订单,而一个订单只能属于一个客户 注意:我们不仅在在Order类中定义了Customer类型的属性 customer;还在Customer类中定义了一个Set集合(用来包含关 联的Order对象),,因此这是一个Order类到Customer类(或者是 Customer类到Order类)的一对多(或多对一)双向关联如何映射一对多关系如何映射一对多关系set、key和many-to-one元素:元素表明Customer类

5、的orders属性为java.util.Set集合,用来包含 被关联的Order对象 name属性:用来保存关联的持久化对象属性的名称(此属性的类型必 须是接口,本例中必须是Set,而不能是HashSet) cascade属性:当值为save-update表示保存或更新当前对象时(即执 行insert或update语句时),会级联保存或更新与它关联的对象 元素:表明Order表通过外键customerId引用Customers表 元素的class属性指定了一对多关系中多方的类名,也就 是orders集合中存放的是一组什么类型的对象一对多双向关联映射一对多双向关联映射演示示例: Customer

6、和Order的一对多双向关联映射inverse属性inverse属性 通过将Set元素的inverse属性设置为true,来提高应用的 性别,减少不必须的JDBC操作: 这表明只有many方修改了关联关系,才会生效(也就是执行JDBC 操作修改数据库内容,one方修改关联关系,不会修改数据库的 内容)演示示例: Customer和Order的一对多双向关联映射inverse属性的作用级联删除关联的持久化对象级联删除关联的持久化对象 通过将Set元素的cascade属性设置为delete可以级联删 除关联的持久化对象演示示例:级联删除关联的持久化对象删除解除关联关系的对象删除解除关联关系的对象

7、通过将Set元素的cascade属性设置为delete-orphan可以 自动删除解除关联的持久化对象(many方)演示示例:删除解除关联关系的对象cascade属性总结cascade属性总结cascade属性总的来讲就是用来控制如何操作关联的持久化对象的, 它的值有如下几类 none 保存,更新或删除当前对象时,忽略其它关联的对象 save-update 保存、更新时级联保存所有的临时对象,并且级联更新关联的游离对象 delete 通过session的delete方法删除当前对象,级联删除关联的对象 all all=save-update操作+delete操作 delete-orphan 删除所有和当前对象解决关联关系的对象 all-delete-orphan all-delete-orphan=all操作+delete-orphan操作映射一对多双向自身关联关系映射一对多双向自身关联关系 以菜单表为例,演示一对多双向自向关联关系演示示例:映射一对多双向自身关联关系总结总结 使用Hibernate,通过简单的配置即可获得对象间关联的 能力 常用的关联有one-to-many关联和many-to-one关联。 根据业务需要确定关联的配置 根据业务需要配置单向或双向关联 根据业务需要配置inverse属性和cascade属性提高应用的属性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号