Hibernate中的关系映射,最常见的关系映射之一就是多对多关系映射例如用户与角色的关系,一个用户对应多个角色,一个角色对应多个用户。如图:
![](https://box.kancloud.cn/2016-02-22_56caddfb22b7f.jpg)
Hibernate中如何来映射这两个的关系呢?
下面就为大家讲解一下:
1、创建实体类User和实体类Role
User.java
~~~
package com.bjpowernode.hibernate;
import java.util.Set;
public class User {
private int id;
private String name;
private Set roles;
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 Set getRoles() {
return roles;
}
public void setRoles(Set roles) {
this.roles = roles;
}
}
~~~
Role.java
~~~
package com.bjpowernode.hibernate;
public class Role {
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;
}
~~~
2、创建映射文件User.hbm.xml和Role.hbm.xml
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">
<hibernate-mapping>
<class name="com.bjpowernode.hibernate.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.Role" column="role_id" />
</set>
</class>
</hibernate-mapping>
~~~
Role.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">
<hibernate-mapping>
<class name="com.bjpowernode.hibernate.Role" table="t_role">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
</class>
</hibernate-mapping>
~~~
3、效果图
![](https://box.kancloud.cn/2016-02-22_56caddfb35651.jpg)
- 前言
- 菜鸟学习Struts——配置Struts环境
- 菜鸟学习Struts——简易计算器
- 菜鸟学习Struts——bean标签库
- 菜鸟学习Struts——Scope属性
- 菜鸟学习Struts——国际化
- 菜鸟学习Struts——总结
- 菜鸟学习Hibernate——配置Hibernate环境
- 菜鸟学习Hibernate——持久层框架
- 菜鸟学习Hibernate——简单的一个例子
- 菜鸟学习Hibernate——简单的增、删、改、查操作
- 菜鸟学习Hibernate——一对多关系映射
- 菜鸟学习Hibernate——多对多关系映射
- 菜鸟学习Hibernate——缓存
- 菜鸟学习Spring——初识Spring
- 菜鸟学习Spring——第一个例子
- 菜鸟学习Spring——60s让你学会动态代理原理
- 菜鸟学习Spring——60s使用annotation实现简单AOP
- 菜鸟学习Spring——60s配置XML方法实现简单AOP
- 菜鸟学习Spring——60s利用JoinPoint获取参数的值和方法名称
- 菜鸟学习Spring——60s学会Spring与Hibernate的集成
- 菜鸟学习SSH——目录
- 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式
- 菜鸟学习Spring——SpringMVC注解版在服务器端获取Json字符串并解析
- 菜鸟学习Spring——SpringMVC注解版将URL中的参数转成实体
- 菜鸟学习Spring——SpringMVC注解版解析不同格式的JSON串
- 菜鸟学习Spring——SpringIoC容器基于三种配置的对比