- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
hibernate-3讲述
关联关系映射 关联关系映射 单向和双向关系映射 1?N 1?1 N?N 关联关系映射 客观世界中的对象很少孤立存在的,相互之间存在关系。 例如,学生和班级,学生属于某个班级,一个班级有多名学生 取得一个学生的数据,就应该从这个学生能获得其所在的班级(年级、班号、专业..) 获得一个班级的实例,也应该能够方便地获取到该班级下的学生的信息 数据库中,一般通过外键或关联表的方式来建立和维护关联关系 关联关系映射 关系的分类 一对一 1?1 一对多 1?N 多对一 N?1 多对多 N?N 关系的维持方式 单向 只能从一端导航到另一端,单方向访问 双向 关系的两端都持有对方的引用,可以互相访问 最常见的N?1关系 N?1 单向关联,使用外键 示例: 一个Person,只属于一个Department; 一个Department,包含多个Person; 在多的一端建立一个成员变量,指向一的一端 一的一端无对多的引用 在多的一端使用@ManyToOne和@JoinColumn注解, @ManyToOne 其他可选属性 fetch:抓取策略 FetchType.EAGER 立即抓取 FetchType.LAZY 延迟抓取 ManyToOne, 对one一端,默认采用EAGER,立即抓取 cascade:操作的级联 CascadeType.PERSIST CascadeType.MERGE CascadeType.REFRESH CascadeType.REMOVE CascadeType.ALL targetEntity 被关联的实体的类名,默认情况下,Hibernate会自动检测 示例演示Cascade级联 不设置级联时,需要先保存Department,再保存Person,否则会报错 设置了级联,在保存Person的时候,自动级联保存关联的Department对象 CascadeType.PERSIST,只对persist方法有效,对save方法无效 最常见的N?1关系 N?1 单向关联,使用连接表 在多的一端建立一个成员变量,指向一的一端 一的一端无对多的引用 在多的一端使用@ManyToOne和@JoinTable注解, 示例: 一个Person,只属于一个Department; 一个Department,包含多个Person; 单向1?1关联 基于外键的1?1关联 建立成员变量对关联对象进行引用 使用@OneToOne, @JoinColumn做注解 @OneToOne注解请参考JavaEE 文档 示例:1-1FK\app\domain\Person.java 单向1?1关联 基于连接表的1?1关联 建立成员变量对关联对象进行引用 使用@OneToOne, @JoinTable做注解 示例:1-1withjointable\app\domain\Person.java 注意:连接表中关联两端实体的外键都需要添加唯一性约束:unique=true 基于外键的单向1?N关联 需要从1的一端访问多的一端 实现方式 在1的一端建立集合,存放关联的多端对象 使用@OneToMany注解指明1--N的关系 使用@JoinColumn注解来建立外键 外键是加在多的一端所对应的数据表中 示例代码;1-Nnojointable\app\domain\Person.java 1-Nnojointable\src\lee\PersonManager.java 由于没有设置级联操作,因此,持久化person的时候,需要首先持久化其关联的address对象 基于连接表的单向1?N关联 需要从1的一端访问多的一端 实现方式 在1的一端建立集合,存放关联的多端对象 使用@OneToMany注解指明1?N的关系 使用@JoinTable建立连接表 连接表中包含指向两端的外键 示例代码;1-Njointable\src\app\domain\Person.java 注意:在指向address一端的外键上加入唯一性约束unique=true,表示每个Address对象只能关联一个Person对象;指向Person的外键不添加唯一性约束,表示一个Person对象可以关联多个address对象??person到Address的1?N关系 单向N?N关联 多对多关联,只能通过连接表来实现 建立一个成员变量(集合),保存关联的对象 使用@ManyToMany注解来指明多对多关系 使用@JoinTable来定义连接表,建立外键 因为是多对多关系,因此在建立外键时不要使用unique=true 示例代码: N-N\src\app\domain\Person.java 双向关联——基于外键的1--N关联 双向关联,需要在关系的两端都建立变量来
您可能关注的文档
- 于英建筑力学12-物体受力分析下概要.ppt
- 云南师大附中2016届高考适应性月考卷(五)理科综合-答案--图片概要.doc
- 二维设计基础1-形态的创造与构成概要.ppt
- 云南师大附中2017届高三上学期高考适应性月考(三)数学(理)试题概要.doc
- H3CNE_GBO-190_题库V2.01及答案详解讲述.doc
- 云南昆明泳池恒温方案书概要.doc
- H3CNE_GBO-190_题库讲述.doc
- H3CNE题库(附答案)讲述.doc
- H3CNE题库(详解)-2016年必威体育精装版版讲述.doc
- 云南省、四川省、贵州省2017届高三上学期百校大联考(语文)概要.doc
- 13SG364 预制清水混凝土看台板.docx
- 13SG905-1 房屋建筑工程施工工艺图解.docx
- 13SG905-2 房屋建筑工程施工工艺图解.docx
- 05G525 吊车轨道联结及车挡(适用于钢吊车梁).docx
- 08SG618-3 农村民宅抗震构造详图(生土结构房屋).docx
- 05G514-3 12m实腹式钢吊车梁(中级工作制 A4 A5 Q345钢).docx
- 03G322-3钢筋混凝土过梁(混凝土小型空心砌块砌体).docx
- 03SG435-1 预应力混凝土圆孔板(预应力钢筋为螺旋肋钢丝,跨度2.1m~4.8m).docx
- 03SG435-2 预应力混凝土圆孔板(预应力钢筋为螺旋肋钢丝,跨度4.8m~7.2m).docx
- 04G321 钢筋混凝土连系梁.docx
文档评论(0)