例子阐述:一个用户有多个角色,一个角色可以由多个用户扮演
public class User { private Integer id; private String name; private Set<Role>roles; public User(){} public User(Integer id){ this.id=id; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; } }
<hibernate-mapping> <!-- 每一个class类对应一个持久化对象 --> <class name="model.User" table="mw_user"> <id name="id" column="id"> <!-- 主键的生成策略 --> <generator class="identity"></generator> </id> <property name="name"></property> <set name="roles" table="mw_mapping"> <key column="user_id"></key> <many-to-many class="model.Role" column="role_id"></many-to-many> </set> </class> </hibernate-mapping>
public class Role { private int id; private String roleName; private Set<User> users; public Role(){}; public Role(Integer id){ this.id=id; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public Set<User> getUsers() { return users; } public void setUsers(Set<User> users) { this.users = users; } }
<hibernate-mapping> <!-- 每一个class类对应一个持久化对象 --> <class name="model.Role" table="mw_role"> <id name="id" column="id"> <!-- 主键的生成策略 --> <generator class="identity"></generator> </id> <property name="roleName"></property> <set name="users" table="mw_mapping"> <key column="role_id"></key> <many-to-many class="model.User" column="user_id"></many-to-many> </set> </class> </hibernate-mapping>
public static void main(String[] args) { Configuration configuration=new Configuration().configure(); SessionFactory sessionFactory=configuration.buildSessionFactory(); Session session=sessionFactory.openSession(); Transaction transaction=session.beginTransaction(); User user=new User(); user.setName("zhansan"); Role role1=new Role(); role1.setRoleName("manager"); Role role2=new Role(); role2.setRoleName("manager2"); Set<Role> roles = new HashSet<Role>(); session.save(role1); session.save(role2); roles.add(role1); roles.add(role2); user.setRoles(roles); session.save(user); transaction.commit(); session.close(); }
public static void main(String[] args) { Configuration configuration=new Configuration().configure(); SessionFactory sessionFactory=configuration.buildSessionFactory(); Session session=sessionFactory.openSession(); Transaction transaction=session.beginTransaction(); User user=(User)session.get(User.class, new Integer(3)); Set<Role>roles=user.getRoles(); Iterator<Role> iterator=roles.iterator(); while(iterator.hasNext()){ Role role=iterator.next(); System.out.println(role.getRoleName()); } transaction.commit(); session.close(); }
相关推荐
"Hibernate one-to-many / many-to-one关系映射"是两个基本的关系类型,用于表示实体间的关联。在这个主题中,我们将深入探讨这两种关系映射的原理、配置和实际应用。 一、一对一(one-to-one)与一对多(one-to-...
在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而一门课程也可以被多名学生选修。在Hibernate中,这种关系通过中间关联表(也称为连接表或联合表)来实现,该...
本话题主要探讨两种基本的关系映射类型:many-to-one(多对一)和one-to-many(一对多)。这两种关系映射是数据库中常见的关联类型,理解和掌握它们对于开发高质量的Java应用至关重要。 1. many-to-one关系 many-to...
关联映射的本质: 将关联关系映射到数据库,所谓的...<many-to-one>会在多的一端加入一个外键,指向一的一端,这个外键是由<many-to-one> 中的column属性定义的,如果忽略了这个属性那么默认的外键与实体的属性一致
其中,`many-to-one`(多对一)关系是较为常见的一种,它指的是一个实体可以对应另一个实体中的多个实例。 #### 代码示例解析 在提供的代码示例中,定义了两个实体类:`User` 和 `Group`,其中 `User` 与 `Group` ...
在Hibernate框架中,多对多关系通过`<many-to-many>`标签来配置。它需要指定两个属性:`entity-name`表示关联的实体类,以及`table`定义用来存储关联关系的中间表(如果需要自定义的话)。例如: ```xml <many-to-...
在数据库世界中,一对多(One-to-Many)关系是一种常见的关联类型,其中一个表(父表)可以与多个其他表(子表)相关联。在NHibernate中,配置这种映射关系对于理解和使用ORM至关重要。 一对多关系意味着一个实体...
本实例将详细讲解如何在Hibernate中实现Many-to-One关系映射,这是一种常见的数据库关联,表示一个实体可以与多个其他实体相关联。 在Many-to-One关系中,通常一个实体(如部门)可以有多个相关实体(如员工),而...
在Java的持久化框架Hibernate中,Many-to-Many映射是一种常见的关系模型,它用于表示两个实体类之间多对多的关系。在这个主题中,我们将深入探讨如何使用注解来实现这种映射,以及其背后的数据库原理和实际应用。 ...
在本文中,我们将深入探讨如何使用Hibernate来实现多对多(many-to-many)的映射关系。 首先,多对多映射关系通常涉及到两个实体类之间的关联,例如在学生选课的例子中,学生(Student)和课程(Course)之间存在多...
在现实世界的数据模型中,很多情况下存在多对多(Many-to-Many)的关系,例如学生与课程的关系,用户与角色的关系等。本教程主要讲解如何使用Hibernate来处理多对多的关联映射,尤其是基于HashMap的实现方式。 首先...
在Hibernate中,实现多对多映射主要通过`<many-to-many>`标签。下面我们将详细介绍如何配置和使用这个标签。 1. **配置映射文件**: 在Hibernate的XML映射文件中,我们需要为老师和学生类分别创建对应的.hbm.xml...
本程序包含: hibenate 上传图片,二进制数据,大文本,集合映射的多种关系,onetoone,ontomany,manytomany等关系详细代码示例以及注释,全部由本人测试通过,对理解hibernate配置有极大帮助。
本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...
"Hibernate many-to-many"指的是Hibernate中处理多对多关联关系的一种方式。多对多关系是两个实体类之间存在的一种复杂关联,比如学生和课程之间的关系,一个学生可以选修多门课程,一门课程也可以被多个学生选修。 ...
关联映射主要包括四种类型:一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。下面我们将逐一探讨这些关联映射的配置方法。 1. **一对一关联映射** - **主键关联**...
#### 一、多对一关联(Many-to-One) 在本章中,我们将探讨如何在 Hibernate 中处理多对一关联。这种关联类型非常常见,在许多应用中都会遇到。例如,在一个在线书店应用中,每本书都与一个出版商关联,而一个出版...
- `<many-to-one>`元素表示多对一关系。 - `property-ref`属性指定了引用的属性。 通过以上示例可以看出,Hibernate提供了灵活的方式处理实体间的多对多和一对一关系。开发者可以根据实际需求选择合适的方式来...
标题中的“8 映射-- 一对多(部门对员工)”指的是在数据库设计和对象关系映射(ORM)中常见的关系类型,特别是使用Hibernate框架时的处理方式。在这个场景中,“部门”与“员工”之间存在一对多的关系,即一个部门...