简述四种关联映射
来源:互联网 发布:mac队全灭事件真相 编辑:程序博客网 时间:2024/05/21 00:46
一、一对一:分为两种实现关联的方式分别为:
a) 基于主键实现双向一对一
i. 分清主从对象,例如 Person------IdCard 公民---身份证 主----从的关系
ii. 因为是双向,应在主对象这里设置一个IdCard的成员变量,然后在映射文件中加入<one-by-one name=”idCard”/>即可
iii. 在从对象同样设置一个Person对象的成员变量在映射文件中将主键产生的策略修改为foreign,它的主键应是引用Person方产生的主键。格式为:
<id name=”id”column=”id”>
<generatorclass=”foreign”>
<param name=”propert”>person</param>
</generator>
</id>
<one-to-onename=”person” contrained=”true”/>
Contrained属性表示为添加约束,默认的是不添加
b) 基于外键实现双向一对一
i. 主对象Person中的映射文件设置
增加<one-to-one name=”idCard” property-ref=”person_id”/> property-ref 是对应连接的是那一个字段名
ii. 从对象IdCard中的映射文件设置
利用多对一的标签来解决,指定unique属性的值为true,则表示唯一性,就会与person表呈现一对一的关系映射
<many-to-onename=”person” column=”person_id” unique=”true”/>这里的column的值应该与person指定的property-ref的值一样
二、多对一、一对多 双向关联
a) 分清多方和一方 employee----department 员工-----部门 实现双向关联
b) 先设置多方,在实体类中增加Department对象的成员变量。然后配置映射文件
<many-to-onename="depart" column="depart_id" foreign-key="id"not-null="true" />
Foreign-key属性指定的是一方的主键 not-null属性可以缺省,不能为空 就是在测试 关联的时候,一定要有一方的主键才能添加多方,否则报错。
c) 然后设置一方。在实体类中添加集合(可选用Set、List、Map等集合)泛型Set<Employee>成员变量,并配置映射文件
<set name="emps">
<!--指定员工表中外键的列名 -->
<key column="depart_id"></key>
<!-- 子标签在告诉这个集合表示一对多的关系并用class指定集合存放的对象类型 -->
<one-to-manyclass="Employee" />
</set>
d)分析:在这里实现的是双向关联。如果不配置多方,则代表的是一对多的关联,如果不配置一方,则代表的是多对一的关联
三、多对多
a) 首先分清是否是双向关联,我测试的是双向关联,Teacher----student 老师----学生
b) 配置一个多方Teacher,在实体类中增加集合(可选用Set、List、Map等集合)泛型指定的是Student的成员变量,并配置映射文件
<setname="students" table="teacher_student"><!-- table属性指定的是中间表的名字 -->
<!—映射的字段为自身的主键,为teacher_id-->
<keycolumn="teacher_id"></key>
<!—多对多标签 指定对应类Student和映射的行student_id,这里的映射应该与哪一方的自身映射的一样-->
<many-to-manyclass="Student" column="student_id">
</many-to-many>
</set>
c) 配置另一个多方,在实体类中增加集合(可选用Set、List、Map等集合)泛型指定的是Teacher的成员变量,并配置映射文件
d) 与另一方配置类似。但是必须对应。在这里映射的id应该与另一方对应
<set name="teachers"table="teacher_student">
<keycolumn="student_id"></key>
<many-to-manyclass="Teacher"column="teacher_id"></many-to-many>
</set>
- 简述四种关联映射
- Hibernate 学习经验之谈-(四)关联映射
- Hibernate映射解析——关联映射(四)
- 【hibernate】关联映射那些事(四)----继承映射
- Hibernate中的几种关联映射------一对一关联映射
- ORM框架Hibernate (四) 一对一单向、双向关联映射
- 【Hibernate四】关系映射之一对多双向关联
- Hibernate框架学习之四:关联映射那些事
- Hibernate 简单使用(四)一对多关联映射
- 浅谈MyBatis 之 高级映射/关联查询(四)
- 关联映射
- 关联映射
- 关联映射
- 关联映射
- 关联映射
- 关联映射
- 关联映射
- 关联映射-双向关联
- 在 Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包
- KeyWordHelper-关键字提取类(注:使用第三方组件DictSeg.dll)
- Java 线程池的原理与实现
- android Theme level 11 使用总结
- SHFileOperation函数
- 简述四种关联映射
- How to change the default run level of a RedHat 9.0 or Fedora Core Linux system
- hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别
- 对于struct file_operations中ioctl消失的学习笔记
- 值类型与引用类型
- Xml CData的使用 获取原始的节点内容
- android Theme使用总结
- .NET 处理Excel 2003+2007格式最佳方案
- 为什么我这么低端:一个程序员的自我修养