一 多对多配置(以角色和用户为例)
1 创建两个实体类(Role 和 User),代码如下:
public
class User {
private Integer user_id;
private String user_name;
private String user_password;
//一个用户对应多个角色
private Set<Role> SetRole = new HashSet<Role>();
public Set<Role> getSetRole() {
return SetRole;
}
public void setSetRole(Set<Role> setRole) {
SetRole = setRole;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
public class Role {
private Integer role_id;
private String role_name;
private String role_memo;
//一个角色对应多个用户
private Set<User> SetCustum = new HashSet<User>() ;
public Set<User> getSetCustum() {
return SetCustum;
}
public void setSetCustum(Set<User> setCustum) {
SetCustum = setCustum;
}
public Integer getRole_id() {
return role_id;
}
public void setRole_id(Integer role_id) {
this.role_id = role_id;
}
public String getRole_name() {
return role_name;
}
public void setRole_name(String role_name) {
this.role_name = role_name;
}
public String getRole_memo() {
return role_memo;
}
public void setRole_memo(String role_memo) {
this.role_memo = role_memo;
}
2 连个实体类基本映射配置:代码如下:
Role.hbm.xml
文件配置如下:
<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.grl.manytomany.Role" table="t_role">
<id name="role_id" column="role_id">
<generator class="native"></generator>
</id>
<property name="role_name" column="role_name"></property>
<property name="role_memo" column="role_memo"></property>
<set name="SetCustum" table="uer2_role">
<key column="roleid"></key>
<many-to-many class="com.grl.manytomany.User" column = "userid"></many-to-many>
</set>
</class>
User.hbm.xml 文件配置如下:
<?xml version="1.0"
encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.grl.manytomany.User" table="t_user2">
<id name="user_id" column="user_id">
<generator class="native"></generator>
</id>
<property name="user_name" column="user_name"></property>
<property name="user_password" column="user_password"></property>
<set name="SetRole" table="uer2_role" cascade="save-update,delete">
<key column="userid"></key>
<many-to-many class="com.grl.manytomany.Role" column = "roleid"></many-to-many>
</set>
</class>
</hibernate-mapping>
</hibernate-mapping>
3
核心配置文件的映射,代码如下:
<mapping
resource="com/grl/manytomany/Role.hbm.xml" />
<mapping resource="com/grl/manytomany/User.hbm.xml" />
4
测试,执行单元测试代码,就会在数据库中生成三张数据表
public
class OneToManyTest {
@Test
public void test()
{
SessionFactory sessionFactory = HibernateUtils.getSessionFactory();
}
}