用户(User)和角色(Role)是多对多的关系。
一个用户可以对应多个角色,一个角色也可以对应多个用户。
比如张三对应CEO,保洁2个角色,而保洁也可以对应张三,李四2个用户。
通常多对多关系,必须引出第3张表。
1.从User这一端开始配。
在User里面必须有一个集合set来存放角色,举例如下。
package com.bjpowernode.hibernate.domain; import java.util.Set; public class User { private int id; private String name; private Set roles; public Set getRoles() { return roles; } public void setRoles(Set roles) { this.roles = roles; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
那么配置如下:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjpowernode.hibernate.domain.User" table="t_user"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="roles" table="t_user_role"> <key column="user_id"/> <many-to-many class="com.bjpowernode.hibernate.domain.Role" column="role_id"/> </set> </class> </hibernate-mapping>
说明:凡是碰到set,在配置文件中肯定用set标签,name就是指在User类中的集合名,在set还必须指定一个表名,这里就是指第3张表:t_user_role
然后下面配置一个外键,是和User相关的,这里起名叫user_id,
然后下面配置set集合里面放置的对象,即Role,而且也要给它起个列名role_id,放在第三张表里。
至此,单向的多对多配置完成。
--------------------------------------------------------------------------------------------------------------------
下面配置双向多对多的关系。
Role类中添加User的集合,代码如下:
package com.bjpowernode.hibernate.domain; import java.util.Set; public class Role { private int id; private String name; private Set users; public Set getUsers() { return users; } public void setUsers(Set users) { this.users = users; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
配置如下,和User的配置差不多:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.bjpowernode.hibernate.domain.Role" table="t_role"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <set name="users" table="t_user_role"> <key column="role_id"/> <many-to-many class="com.bjpowernode.hibernate.domain.User" column="user_id"/> </set> </class> </hibernate-mapping>
这样双向多对多就配置完成了。
在保存时,先保存谁都无所谓。
refurl:http://blog.csdn.net/yinghuayu1324117/article/details/6519331
相关推荐
通过这个项目,学习者可以深入理解Hibernate双向一对多关系的配置、使用及其实现细节,从而提升数据库操作和对象持久化的技能。实践中遇到的问题和解决方法也会帮助巩固理论知识,提升实际开发能力。
**标题:“Hibernate双向一对多经典实例”** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者能够用面向对象的方式处理数据。本实例将聚焦于Hibernate中的一对多关系...
本主题聚焦于“Hibernate双向一对一关联映射”的注解实现,这是一种高级的数据库设计模式,用于处理两个实体之间一对一的关系。 在Hibernate中,一对一关联映射分为单向和双向。单向一对一映射通常涉及一个实体持有...
在这个“hibernate双向多对多关联映射(注解版)”的主题中,我们将深入探讨如何使用Hibernate的注解配置来处理数据库中的双向多对多关联关系。 首先,多对多关联在数据库设计中是指两个实体之间存在多个对应关系,...
总结来说,理解并能正确使用Hibernate中的多对多双向关联是Java开发中的重要技能,涉及到实体设计、映射配置、数据操作和性能优化等多个方面。通过学习提供的博客和相关代码示例,开发者可以深入掌握这一主题,并将...
描述部分为空,但我们可以根据标题推测,这篇博客可能详细解释了如何在Hibernate中配置和管理这种一对多双向关联,包括XML配置、注解方式,以及如何在代码中进行操作和查询。 **Hibernate ORM简介** Hibernate是一...
对于"hibernate双向一对多关联映射(注解版)",我们可以按照以下步骤进行: 1. **定义实体类**:首先,我们需要创建两个实体类,例如`Parent`和`Child`。在`Parent`类中,`Child`是一个集合,而在`Child`类中,`...
“Hibernate 一对多,多对一,一对多双向关联”是指在Java持久化框架Hibernate中,实体间常见的三种关联关系。在数据库设计中,这种关联关系是常见的,例如一个用户可以有多个订单(一对多),一个订单对应一个用户...
在上述配置中,`<one-to-many>`标签定义了`User`到`Order`的一对多关系,而`<many-to-one>`标签定义了`Order`到`User`的多对一关系。`inverse="true"`意味着`Order`端负责维护关系,即当删除一个`Order`时,其对应的...
在Java的持久化框架Hibernate中,双向多对多关联映射是一种常见的数据关系模型,它允许两个实体类之间存在多个实例互相引用的情况。本练习旨在帮助开发者深入理解并熟练运用这种映射方式。通过以下详细讲解,我们将...
本知识点将深入探讨Hibernate中的双向多对多关联映射,并通过XML配置文件进行设置。 在关系型数据库中,多对多(Many-to-Many)关系是两个表之间的一种复杂关联,表示一个实体可以与多个其他实体相关联,反之亦然。...
总结起来,Hibernate的双向多对多、一对多、一对一映射提供了灵活的数据关联方式,使得Java对象和数据库表之间的关系得以顺畅地转换和操作。理解并熟练掌握这些映射关系,对于开发高效、稳定的Java持久层代码至关...
- `@ManyToOne`: 表示多对一的关系,`@JoinColumn` 定义了外键字段名,这里是 "student_id"。 **增删查改操作** 1. **增加**:创建一个新的学生和课程,然后将课程添加到学生的课程列表中,最后通过SessionFactory...
本文将深入探讨Hibernate ORM中的一个关键概念——多对多双向连接表关联关系。这种关联关系在实际业务场景中非常常见,比如用户与角色、课程与学生等例子,都需要用到多对多的关系来描述它们之间的复杂联系。 首先...
二、Hibernate多对多配置 在Hibernate中,实现多对多关系映射主要通过以下几种方式: 1. **使用`@ManyToMany`注解**:在Java类的属性上添加`@ManyToMany`注解,指定与之关联的实体类以及关联的表字段。 2. **定义...
本教程主要聚焦于Hibernate中的一个复杂关系类型——双向多对多关系。 双向多对多关系是两个实体类之间的一种关联,每个实体都可以拥有多个实例,同时每个实例也可以关联到多个其他实体。这种关系在现实生活中很...
虽然描述部分为空,但根据标题,我们可以推断这篇文章可能详细介绍了如何在Hibernate中设置和管理一对多双向关联,包括配置XML映射文件、注解或者使用Java配置,以及如何在代码中处理这种关联关系。 **标签解析:**...
总之,理解和熟练运用Hibernate的一对多、多对一以及双向关联,是提升Java企业级应用开发效率的关键。通过注解或XML配置,开发者可以灵活地定义实体间的关联,实现数据的持久化。同时,注意级联操作、懒加载策略等...
【标题】:“Hibernate的双向多对一”关系详解 在Java开发中,尤其是在企业级应用中,数据库模型的映射是至关重要的。Hibernate作为一款强大的ORM(对象关系映射)框架,极大地简化了这一过程。本篇将深入探讨...