本文主要是介绍【Hibernate】多对一与一对多关联映射,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在关联映射中,一对多和多对一关系是相对而言的,以用户分组为例(如上图),从用户的角度来看是多对一的关系,多个用户对应一个组;从组的角度来看是一对多关系,一个组对应多个用户。
原理
一对多和多对一映射的原理是一样的,都是在多的一端加入一个外键指向一的一端
区别
多对一关联映射维护的关系:多指向一的关系,如果维护了多指向一的关系,那么加载多的时候会把一加载上来。即加载用户可以知道这个用户属于哪个组
一对多关联映射维护的关系:一指向多的关系,如果维护了一指向多的关系,那么加载一的时候会把多加载上来。即加载组可以知道这个组下的所有用户
实体
多对一
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(String name) {this.name = name;}
}
User
public class User {private int id;private String name;private Group group;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}
}
一对多
Group
public class Group {private int id;private String name;private Set user;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}
User
public class User {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(String name) {this.name = name;}}
映射文件
多对一
<hibernate-mapping><class name="cn.itcast.oa.domain.Group" table="t_group"><id name="id"><generator class="native"></generator></id><property name="name"/></class>
</hibernate-mapping><hibernate-mapping><class name="cn.itcast.oa.domain.User" table="t_user"><id name="id"><generator class="native"/></id><property name="name"/><many-to-one name="group"/></class>
</hibernate-mapping>
一对多
<hibernate-mapping><class name="cn.itcast.oa.domain.User" table="t_user"><id name="id"><generator class="native"/></id><property name="name"/></class>
</hibernate-mapping><hibernate-mapping><class name="cn.itcast.oa.domain.Group" table="t_group"><id name="id"><generator class="native"></generator></id><property name="name"/><set name="user"><key column="groupId"/><one-to-many class="cn.itcast.oa.domain.User"/></set></class>
</hibernate-mapping>
效果展示
虽然一对多和多对一在配置上边是不一样的,但是最终形成的表还是相同的
这篇关于【Hibernate】多对一与一对多关联映射的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!