实体关联知识讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
时间:6学时 教学方法:PPT讲解、示 例讲解、练习
20
4.5.1 单向多对多关联(了解)
•
单向关联映射:
<class name="com.neusoft.entity.TCategory" table="t_category"> <id name="id" column="category_id" type="java.lang.Long"> <generator class="native"/> </id> <property name="name" column="category_name" type="java.lang.String"/> <set name="items" table="t_category_item" cascade="save-update" > <key column="category_id"/> <many-to-many class="com.neusoft.entity.TItem" column="item_id"/> </set> </class> <class name="com.neusoft.entity.TItem" table="t_item"> <id name="id" column="item_id" type="java.lang.Long" > <generator class="native"/> </id> <property name="name" column="item_name" type="java.lang.String"/> </class>
时间:6学时 教学方法:PPT讲解、示 例讲解、练习
16
4.4.1 双向一对多关联
•
类图
CM2O2_Class -id: int -name: String -students: Set<CM2O2_Student> 1 *
CM2O2_Student -id: int -name: String -email: String -trainingClass: CM2O2_Class
3
4.1.2 无关联的实体
•
类图
CNA_Student CNA_Class -id: Integer -name: String -id: Integer -name: String -email: String -classId: Integer
参见例子工程:hibernate_04_01_no_relate
11
4.3.1 单向一对多关联
•
类图
CO2M_Class -id: int -name: String -students: Set<CO2M_Student> *
CO2M_Student -id: Integer -name: String -email: String
1
12
4.3.1 单向一对多关联的实现
• 映射配置
<class name="com.neusoft.entity.C_Class" table="c_class"> <id name="id" column="class_id" type="java.lang.Long" > <generator class="native"/> </id> <property name="name" column="class_name" type="java.lang.String"/> <set name="students" cascade="save-update, delete-orphan" outer-join="true"> <key column="calss_id" not-null="true"/> <one-to-many class="com.neusoft.entity.CS_Student"/> </set> </class>
参见例子工程:hibernate_04_02_m2o
10
第四章:实体关联
实体关联:
4.1 实体关联
4.2 单向多对一关联 4.3 单向一对多关联 4.4 双向一对多关联 4.5 多对多关联 4.6 一对一主键/外键关联 4.7 实体关联的常见问题
时间:6学时 教学方法:PPT讲解、示 例讲解、练习
6
4.1.5 Hibernate中实体的关联
•
无关联关系 – 对象的关联关系通过编写代码维护 关联 – 单向 – 双向 Hibernate关联 – 自动检索关联的对象(数据) – 以面向对象的方式维护关联关系 – 可持久化关联的对象
•
•
7
第四章:实体பைடு நூலகம்联
实体关联:
4.1 实体关联
4.2 单向多对一关联 4.3 单向一对多关联 4.4 双向一对多关联 4.5 多对多关联 4.6 一对一主键/外键关联 4.7 实体关联的常见问题
17
4.4.1 双向一对多关联的实现
• 映射配置
<class name="com.neusoft.entity.C_Class" table="c_class"> <id name="id" column="class_id" type="java.lang.Long" > <generator class="native"/> </id> <property name="name" column="class_name" type="java.lang.String"/> <set name="students" cascade="delete" outer-join="true"> <key column="class_id"/> <one-to-many class="com.neusoft.entity.CS_Student"/> </set> </class> <class name="com.neusoft.entity.CS_Student" table="cs_student"> <id name="id" column="student_id" type="java.lang.Long"> <generator class="native"/> </id> <property name="name" column="student_name" type="java.lang.String"/> <property name="email" column="email" type="java.lang.String"/> <many-to-one name="trainingClass" class="com.neusoft.entity.C_Class" column="class_id" outer-join="true"/> 参见例子工程:hibernate_04_04_o2m2 </class>
9
4.2.1 单向多对一关联实现
• 映射配置
<class name="com.neusoft.entity.C_Class" table="c_class"> <id name="id" column="class_id" type="java.lang.Long" > <generator class="native"/> </id> <property name="name" column="class_name" type="java.lang.String"/> </class> <class name="com.neusoft.entity.CS_Student" table="cs_student"> <id name="id" column="student_id" type="java.lang.Long"> <generator class="native"/> </id> <property name="name" column="student_name" type="java.lang.String"/> <property name="email" column="email" type="java.lang.String"/> <many-to-one name=“classObject” column=“class_id” class=“com.neusoft.entity.C_Class” not-null=“true” cascade="save-update" /> </class>
<class name="com.neusoft.entity.CS_Student" table="cs_student"> <id name="id" column="student_id" type="java.lang.Long"> <generator class="native"/> </id> <property name="name" column="student_name" type="java.lang.String"/> <property name="email" column="email" type="java.lang.String"/> </class> 参见例子工程:hibernate_04_03_o2m
时间:6学时 教学方法:PPT讲解、示 例讲解、练习
8
4.2.1 单向多对一关联
•
类图
CM2O_Student -id: int -name: String -email: String -trainingClass: CM2O_Class
CM2O_Class * 1 -id: int -name: String
CO2M_Student -id: Integer -name: String -email: String
1
5
4.1.4 类的双向关联
CM2O2_Class -id: int -name: String -students: Set<CM2O2_Student> 1 *
CM2O2_Student -id: int -name: String -email: String -trainingClass: CM2O2_Class
13
4.3.2 持久化的传播
•
对于Hibernate的实体关联,对实体对象进行的持久化操作(如 :save、delete),可以传播到关联的引用对象,称为级联。 级联的方式通过cascade属性设置,主要有以下几种值 – none:默认值,告诉Hibernate忽略关系 – save-update:当进行save或update时关联 – delete:当进行delete时关联 – all:进行save、update、delete时都关联 – all-delete-orphan:与all类似,此外,删除任何已经从关联 删除的持久化对象 – delete-orphan:删除任何已经从关联删除的持久化对象
4
4.1.3 类的单向关联
CM2O_Student -id: int -name: String -email: String -trainingClass: CM2O_Class CM2O_Class * 1 -id: int -name: String
CO2M_Class -id: int -name: String -students: Set<CO2M_Student> *
18
4.4.2 双向关联的关系维护
•
哪一端维护关联关系 – inverse = “true” – 由双向关联另一方维护该关联,己方不维护该关联(只能进行 查询操作)。
19
第四章:实体关联
实体关联:
4.1 实体关联
4.2 单向多对一关联 4.3 单向一对多关联 4.4 双向一对多关联 4.5 多对多关联 4.6 一对一主键/外键关联 4.7 实体关联的常见问题
•
14
4.3.2 cascade:delete-orphan
•
仅应用于<one-to-many>元素 – 当从父对象(one端)的集合中移除子对象(many端)引用 时,子对象被执行delete操作
•
隐含了delete操作的传播
15
第四章:实体关联
实体关联:
4.1 实体关联
4.2 单向多对一关联 4.3 单向一对多关联 4.4 双向一对多关联 4.5 多对多关联 4.6 一对一主键/外键关联 4.7 实体关联的常见问题
Hibernate编程基础
——实体关联
1
第四章:实体关联
实体关联:
4.1 实体关联
4.2 单向多对一关联 4.3 单向一对多关联 4.4 双向一对多关联 4.5 多对多关联 4.6 一对一主键/外键关联 4.7 实体关联的常见问题
时间:6学时 教学方法:PPT讲解、示 例讲解、练习
2
4.1.1 表间关联