两张表的多对多关系,在数据库中通常是通过第三张中间表来实现的,第三张中间表放的是两张表各自的主键值,通过主键与主键的对应来体现表直接的关系。比如在权限系统中,一个用户可以拥有多种权限,而一种权限也可以授予多个用户。
在持久化对象设计的时候,角色和用户都分别有一个集合来防止拥有它的用户或角色。角色类的设计:
public class RolePO {
private int id;
private String name;
private Set employees = new HashSet();
......
}
用户类的设计:
public class EmployeePO {
private int id;
private String name;
private Set roles = new HashSet();
......
}
映射对象关系映射文件配置如下:
RolePO.hbm.xml:
<hibernate-mapping>
<class name="com.lovo.po.RolePO" table="t_role">
<id name="id" column="r_id" type="int">
<generator class="increment"></generator>
</id>
<property name="name" column="f_name" type="string"></property>
<set name="employees" table="mapping" cascade="all" inverse="false">
<key column="f_r_id"></key>
<many-to-many class="com.lovo.po.EmployeePO" column="f__e_id"/>
</set>
</class>
</hibernate-mapping>
EmployeePO.hbm.xml:
<hibernate-mapping>
<class name="com.lovo.po.EmployeePO" table="t_employee">
<id name="id" column="e_id" type="int">
<generator class="increment"></generator>
</id>
<property name="name" column="f_name" type="string"></property>
<set name="roles" table="mapping" cascade="all" inverse="true">
<key column="f_e_id"></key>
<many-to-many class="com.lovo.po.RolePO" column="f_r_id"/>
</set>
</class>
</hibernate-mapping>
需要注意的是<key>中的column对应的是当前类在中间表中对应的字段,即对方想要的外键,而<many-to-many class="com.lovo.po.RolePO" column="f_roleid"/>中的column指示的是中间表中本类想要的外键。还要注意的是inverse的值只能有一个为true,因为如果双发都为true,那么双发都去维护关系,会造成中间关系表中出现重复的数据。在进行删除的时候Hibernate会删除id所对应的信息和中间关系表中对应的信息,如,删除用户
如:Hibernate: delete from mapping where f_e_id=?
Hibernate: delete from employee where e_id=?
[转]http://blog.sina.com.cn/s/blog_621a42970100i79o.html
分享到:
相关推荐
在Java的持久化框架Hibernate中,多对多关联映射是一种常见的关系数据库模型映射方式,用于处理两个实体之间存在多个实例互相关联的情况。本文将深入探讨Hibernate如何实现多对多关联映射,并通过实际例子解析相关...
本教程将带你入门Hibernate的多对多实体映射,帮助你理解如何通过源码来实现这种复杂的关系映射。 一、Hibernate概述 Hibernate是一个对象关系映射(ORM)框架,它允许我们将Java对象(实体)与数据库表进行映射,...
本项目聚焦于Hibernate中的多对多关系映射,这是一种复杂但常见的数据库关联类型,适用于如用户角色、商品类别等场景。 **一、多对多关系** 在数据库设计中,多对多关系表示两个实体之间存在多个匹配的可能性。...
在Java的持久化框架Hibernate中,多对多(Many-to-Many)关系映射是一种常见的数据库交互模式,它用于表示两个实体之间复杂的关系。在这个场景中,一个实体可以与多个其他实体相关联,反之亦然。例如,在学生和课程...
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
Hibernate对象关系映射一对多 很基础等文档
Hibernate 是一个流行的对象关系映射(ORM)框架,它允许开发者使用 Java 对象来操作数据库,消除了直接编写 SQL 的需要。在 Hibernate 中,映射关系是将数据库表与 Java 类之间的关联方式,使得对象模型可以与关系...
在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在Java应用中操作数据库变得更加简单。本文将深入探讨Hibernate中的一对多和多对一映射关系,并通过一...
总的来说,这篇博客和相关代码示例为开发者提供了一个理解和实现Hibernate中多对多单向关联的起点,帮助他们更好地处理复杂的数据库关系映射。学习和实践这部分内容对于提升Java后端开发能力,特别是使用Hibernate...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而提高开发效率。本主题聚焦于"hibernate单向多对多映射",特别是在XML配置文件中的实现。在这...
在IT行业中,数据库管理和对象关系映射(ORM)框架是至关重要的部分,特别是对于Java开发者而言,Hibernate是一个广泛使用的ORM工具。本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合...
综上所述,这个压缩包提供了关于Hibernate关系映射的全面教程,包括多对多、一对一和一对多的关系配置,以及如何在Spring+Hibernate+Struts环境中应用这些关系。对于想要深入理解Hibernate并提升开发效率的Java...
**标题:“Hibernate关系映射”** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式,极大地简化了数据持久化的复杂性。"多对一"关系映射是Hibernate...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作转换为面向对象的方式,从而简化了数据访问层的编程。在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将...
本篇文章将深入探讨Hibernate中的一对多和多对多关系映射。 首先,让我们理解一对多关联映射。在数据库中,一对多关系意味着一个表中的记录可以与另一个表中的多个记录相关联。在Hibernate中,这可以通过在实体类中...
在Java的持久化框架Hibernate中,多对多映射是一种常见的关系映射方式,用于处理两个实体类之间一对多或多对一的关系。在这个例子中,我们看到的是`Team`(团队)与`Member`(成员)之间的多对多关系,通过`Map`数据...
关系映射主要包括一对一、一对多、多对一和多对多四种关系。 2. **配置文件**:在Hibernate中,`hibernate.cfg.xml`是核心配置文件,它包含了数据库连接信息、实体类映射等设置。在案例三中,我们需要关注这个文件...