hibernate——多对多映射
来源:互联网 发布:isignature签章软件v8 编辑:程序博客网 时间:2024/06/08 16:12
其实不管是什么映射,很关键的一点就是表之间是如何产生映射的。映射关系的产生,关键是在映射文件中配置的,用特定的标签产生特定的映射关系,多对多也不例外。多对多的映射关系,都是转换成多对一的关系,即新增了一个表,来存储两个表之间的关系。此处,我们举一个老师和学生的关系,关键来分析一下,两者是如何产生多对多的映射关系的。
先建立两个类:Teacher和Student
public class Teacher {private int id;private String name;private Set<Student> students; ……//set/get方法}
public class Student {private int id;private String name;private Set<Teacher> teachers; ……//set/get方法}多对多关系的建立,在两个类中,首先要各自包含对方的属性,由于是多对多,所以是一个集合对象。这个是建立映射关系的基础。
然后就是对应的映射文件了:
Teacher.hbm.xml:<hibernate-mapping package="com.suo.domain"><class name="Teacher"><id name="id"><generator class="native"/></id><property name="name"/><set name="students" table="teacher_student"> <key column="teacher_id"/> <!--key是将Teacher类对应的表的主键,作为teacher_student表的一个外键,column只是起到一个命名的作用 --> <many-to-many class="Student" column="student_id"/> <!--many-to-many是将Student类对应的表的主键,作为teacher_student表的一个外键,column只是起到一个命名的作用--></set><!--对set这个标签的初步理解:name指定了类中的属性的名字,table指定了这个属性要映射到的表 。key标签指定了本类所对应表的主键,要作为table所指定表的一个外键,并且命名这个外键。<many-to-many>标签指定了和本类产生多对多关系的类,并且指定了这个类所对应的表的主键作为在table所指定表中的一个外键,并且命名这个外键 --></class></hibernate-mapping>
Student.hbm.xml:<hibernate-mapping package="com.suo.domain"><class name="Student"><id name="id"><generator class="native"/></id><property name="name"/><set name="teachers" table="teacher_student"><key column="student_id"/><many-to-many class="Teacher" column="teacher_id"/></set></class></hibernate-mapping>由配置文件我们可以知道,这里建立的是一个双向的映射关系,即在两个映射文件中,都指定了对方的属性。没有主从表之分。需要理解的是,要在数据库中建立一个中间关系的表,如本例中的teacher_student表,只需要配置一个映射文件就行了。至于另一个文件也做了类似的配置,是因为要建立一个双向的关系,在查询的时候,就可以进行双向的查询。
- hibernate——多对多映射
- 【Hibernate】——多对多映射
- 【Hibernate】——多对一映射
- Hibernate映射—— 多对多关联映射
- Hibernate映射—— 多对一单向关联映射
- Hibernate(四):Hibernate映射——多对一单向关联映射
- Hibernate 关系映射 ——单向多对多
- Hibernate 关系映射 —— 双向多对多
- Hibernate(六)——多对多关联映射
- 菜鸟学习Hibernate——多对多关系映射
- Hibernate(六)——多对多关联映射
- 【SSH快速进阶】——Hibernate 多对多映射
- hibernate映射(四)——多对多
- 【Hibernate】——多对多关联映射
- 008——hibernate多对多关联映射
- 【Hibernate】——多对多关联映射
- Hibernate关联映射--多对一映射
- Hibernate学习笔记(五) — 多对多关系映射
- 有关缓存,缓存算法,缓存框架:part 5
- wince6.0 2450触摸屏问题
- having是分组后的where,是可以聚合的where。
- 修改上传附件的大小
- Specified ID:supplyItemLocalDS collides with the ID for an existing SmartGWT component or object.
- hibernate——多对多映射
- 学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
- synergy 共享鼠标键盘 配置备忘录
- win7下,安装Framework4.0后仍然报Framework初始化错误,且"打开或关闭WINDOWS功能"为空白的可能原因
- CSS属性代码大全
- session缓存理解
- java中计算两个日期相差几天
- win7启用telnet功能
- Linux应用程序之likely and unlikely宏定义