一对多关联(单向)
其实一对多就是多对一的相反,所以这里我们还是使用上一篇中的实体类。
不过略有变化,是以一的一方为主控方。
Group.java
package org.jzkangta.hibernate.many2one1.entity;
// Generated 2010-8-27 14:37:02 by Hibernate Tools 3.2.1.GA
import java.util.HashSet;
import java.util.Set;
/**
* Group generated by hbm2java
*/
public class Group implements java.io.Serializable {
private int int_;
private String name;
private Set<User> users = new HashSet<User>();
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
public int getInt_() {
return int_;
}
public void setInt_(int int_) {
this.int_ = int_;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
User.java
package org.jzkangta.hibernate.many2one1.entity;
// Generated 2010-8-27 14:33:39 by Hibernate Tools 3.2.1.GA
import java.util.Date;
/**
* User generated by hbm2java
*/
public class User implements java.io.Serializable {
private Integer id;
private String name;
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
Group.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2010-8-27 14:37:02 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="org.jzkangta.hibernate.many2one1.entity.Group" table="group" catalog="ibatisdb">
<id name="int_" type="int">
<column name="int" />
<generator class="assigned" />
</id>
<property name="name" type="string">
<column name="name" length="20" />
</property>
<Set name="users">
<key column="groupid_"/>
<one-to-many class="org.jzkangta.hibernate.entity.User"/>
</Set>
</class>
</hibernate-mapping>
多对一关联映射:在多的一端添加一个外键指向一的一端,主控方是多的一端。
一对多关联映射:在多的一端添加一个外键指向一的一端,主控方是一的一端。
所以一对多和多对一关联映射的策略是一致的,只是站的角度不同。
下面来看看双向关联。
User实体需要改变:
package org.jzkangta.hibernate.many2one1.entity;
// Generated 2010-8-27 14:33:39 by Hibernate Tools 3.2.1.GA
import java.util.Date;
/**
* User generated by hbm2java
*/
public class User implements java.io.Serializable {
private Integer id;
private String name;
private Group group;
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2010-8-27 14:33:42 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="org.jzkangta.hibernate.User" table="user" catalog="ibatisdb">
<id name="id" type="java.lang.Integer">
<column name="id_" />
<generator class="identity" />
</id>
<property name="name" type="string">
<column name="name_" length="50" />
</property>
<many-to-one name="group" column="groupid_"/>
</class>
</hibernate-mapping>
<many-to-one name="group" column="
groupid_" inverse="
true"/>
这里的groupid必须和group.hbm.xml中的 <key column="
groupid_"/>
一样。
这样,就完成双向关联。
注意:这种类型的关联,必须由多的一方来维护关系(User),不然会影响性能。(发出过多的update语句)
在group.hbm.xml中:
<Set name="users"
inverse="true">
<key column="groupid_"/>
<one-to-many class="org.jzkangta.hibernate.entity.User"/>
</Set>
加上红色的部分,就可以翻转维护端。交给多的一端。
分享到:
相关推荐
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
该资源包含了一些常用的hibernate关联映射实例。包括一对多,多对多,继承映射,等,是学习hibernate的必备品
Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接表单向关联 Hibernate 多对多单向关联 Hibernate 一对一外键双向关联 Hibernate 一对一主键双向...
hibernate关联映射详解SSH 多对多,一对多关系对象映射
Hibernate双向一对一关联映射(注解版)
1:Hibernate的关联映射,存在一对多和多对一映射,多对多映射: 1.1:一对多和多对一映射,举例说明: 学生和老师: 一个老师可以教多个学生 【一对多映射】 多个学生可以被一个老师教【多对一映射】 部门与员工: ...
Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向关联 │ ├─ 一对一连接表单向关联 │ ├─ 一对多外键单向关联 │ ├─ 一对多连接表单向关联 │ ├─ 多对一外键单向关联 │ ...
Hibernate映射一对多关联关系
博文链接:https://shaqiang32.iteye.com/blog/201309
hibernate双向一对多关联映射(注解版)
hibernate双向一对多关联映射(XML)
student与Score的Map集合关系 student与class的多对一 一对多映射
主要介绍了hibernate一对多(多对一)双向关联映射的用法
Hibernate 的关联映射是一对多,多对一,多对多的关系.
hibernate单向一对多关联映射(注解版)
该资源包括了hibernate开发中的常见关联映射的源代码,其中包括:one2one,one2many,many2many等,还有继承映射,inverse,fetch,cascade关键字的应用等,对初学者来说,是很实用的,难度适中,很好理解
hibernate核心,一对多,多对多映射讲解,看了就完全搞明白了
这个是针对初学Hibernate一对多主键关联映射的源代码 ,希望对初学者有所帮助,开发环境是MyEclipse7.5和HIbernate3.2
hibernate 的基础 常用的主键生成策略 持久化对象的三种状态 一级缓存的常用操作(save/update/saveOrUpdate/delete)一对多关联映射 级联操作
使用hibernate的多对一,一对多的关联,用idea环境搭建,适合刚刚开始学习hibernate搭建的同学看看