Hibernate 关系映射之多对一,一对多关联
一、多对一单向
使用场景:以用户(user)和组(group)关系为例 。
一个组有多个用户;每一个用户对应一个特定的组。
- 对象模型
实体类 User
public class User { private int id; private String name; private Group group; public Group getGroup() {return group; } public void setGroup(Group group) {this.group = group;} public int getId() {return id; } public void setId(int id) { this.id = id;} public String getName() {return name;} public void setName(Stringname) { this.name = name;}}
实体类Group
public class Group { private int id; private String name; public int getId() {return id;} public void setId(int id) { this.id = id;} public String getName() {return name;} public void setName(Stringname) {this.name = name;} }
- 关系模型
- 实体映射关联
1.xml方式
<many-to-one>标签设定关联,在多的一方设置对应的外键
<!--Group.hbm.xml--> <hibernate-mapping> <class name="com.yk.hibernate.Group" table="group"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name"/> </class> </hibernate-mapping> <!--User.hbm.xml--> <hibernate-mapping> <class name="com.yk.hibernate.User" table="user"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="group" column="gid"/> </class> </hibernate-mapping>
annotation方式
在“多”的类中的“一”对象getter方法上添加注解@ManyToOne注解,并用@JoinColumn设定外键名,如下
@ManyToOne @JoinColumn(name="gid") public Group getGroup() { return group; }
二、一对多单向
使用场景:以Class(班级)和Student(学生)的关系为例。
每一个学生属于一个班,每一个班有多个学生。
- 对象模型
实体类Class:
public class Class{ private int id; private String name; private Set<Student>students = new HashSet<Student>(); public int getId() {return id; } public void setId(int id) {this.id = id;} public String getName() {return name;} public void setName(Stringname) {this.name = name;} }
实体类Student:
public class Student { private int id; private String name; public int getId() {return id;} public void setId(int id) { this.id = id;} public String getName() {return name;} public void setName(Stringname) { this.name = name;} }
- 关系模型
- 多对一、一对多的区别:
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一的。
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多的。
两者使用的策略是一样的,只是各自所站的角度不同。
- 实体映射关联
1.xml方式
在“一”的一方添加<set>标签 映射一对多(映射set集合),name=集合对象,然后在用<key>标签定义外键。<one-to-many>标签设置映射的类实体
<!--Student.hbm.xml--> <hibernate-mapping> <class name="com.yk.hibernate.Student" table="student"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name"/> </class> </hibernate-mapping> <!--Class.hbm.xml--> <hibernate-mapping> <class name="com.yk.hibernate.Classes" table="class"> <id name="id" column="id"> <generator class="native"/> </id> <property name="name" column="name"/> <set name="students"> <key column="cid"/> <one-to-many class="com.yk.hibernate.Student"/> </set> </class> </hibernate-mapping>
2.annotation方式
在“一”的类中的“多”对象getter方法上添加注解@OneToMany 注解,并用@JoinColumn设定外键名,如下
@OneToMany @JoinColumn(name="cid") public Set<Student>getStudents() { return students; }
三、多对一双向(一对多双向)
在此不再累赘了,"一"和"多"关系可以双向维持,使用不是很多。关联设定的方法是上面两者的综合。
相关推荐
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
Hibernate映射一对多关联关系
Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向...
hibernate关联映射详解SSH 多对多,一对多关系对象映射
1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1:一对多和多对一映射,举例说明: 学生和老师: 一个老师可以教多个学生 【一对多映射】 多个学生可以被一个老师教【多对一映射】 部门与员工: ...
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
该资源包含了一些常用的hibernate关联映射实例。包括一对多,多对多,继承映射,等,是学习hibernate的必备品
Hibernate双向一对一关联映射(注解版)
student与Score的Map集合关系 student与class的多对一 一对多映射
hibernate双向一对多关联映射(注解版)
hibernate双向一对多关联映射(XML)
博文链接:https://shaqiang32.iteye.com/blog/201309
hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
主要介绍了hibernate一对多(多对一)双向关联映射的用法
hibernate单向一对多关联映射(注解版)
在hibernate中,通常配置对象关系映射关系有两种,一种是基于xml的方式,另一种是基于annotation的注解方式,熟话说,萝卜青菜,可有所爱,每个人都有自己喜欢的配置方式,这个是xml配置的例子
Hibernate 的关联映射是一对多,多对一,多对多的关系.
这个是针对初学Hibernate一对多主键关联映射的源代码 ,希望对初学者有所帮助,开发环境是MyEclipse7.5和HIbernate3.2
Hibernate 一对多关联映射的测试,主要使用部门与员工的级联关系进行添加测试.
本人在厦门邦初培训时候用的ppt 快速入门文档 内容: 建立一对多的关联关系域模型 建立一对多的参照关系的模型 映射一对多关联关系 通过hibernateAPI级联操作关联对象 其它关系的映射:一对一,多对多