1. 程式人生 > >Hibernate框架之路(二)多對多多關系

Hibernate框架之路(二)多對多多關系

-m let ble ssi gin rop assert on() odi

1、配置實體類

技術分享
package cn.pojo;

import java.util.HashSet;
import java.util.Set;

public class User {
    /**
     * 用戶表
     */
    private Integer user_id;
    private String user_name;
    private String user_pwd;
    private Set<Role> setRole = new HashSet<Role>();
    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_pwd() { return user_pwd; } public void setUser_pwd(String user_pwd) { this.user_pwd = user_pwd; } public Set<Role> getSetRole() { return setRole; } public void setSetRole(Set<Role> setRole) { this.setRole = setRole; } }
用戶實體類 技術分享
package cn.pojo;

import java.util.HashSet;
import java.util.Set;

public class Role {
    //角色表
    private Integer role_id;
    private String role_name;
    private String role_nome;
    
    private Set<User> setuser = new HashSet<User>();
    
    public Set<User> getSetuser() {
        return setuser;
    }
    public void setSetuser(Set<User> setuser) {
        this.setuser = setuser;
    }
    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_nome() {
        return role_nome;
    }
    public void setRole_nome(String role_nome) {
        this.role_nome = role_nome;
    }
}
角色實體類

2、配置映射文件

技術分享
<?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="cn.pojo.User" table="user">
            <id name="user_id" column="user_id">
                 <generator class="native"></generator>
            </id>
            <!-- 3、配置其他屬性 -->
            <property name="user_name"></property>
            <property name="user_pwd" ></property>
            <!-- 第三張表 -->
            <set name="setRole" table="user_role" cascade="save-update,delete">
                <key  column="userid"></key>
                <many-to-many class="cn.pojo.Role" column="roleid"></many-to-many>
            </set>
        </class>
    </hibernate-mapping>
用戶配置文件 技術分享
<?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="cn.pojo.Role" table="role">
            <id name="role_id" column="role_id">
                 <generator class="native"></generator>
            </id>
            <!-- 3、配置其他屬性 -->
            <property name="role_name"></property>
            <property name="role_nome" ></property>
            <set name="setuser" table="user_role" cascade="save-update,delete">
                <key  column="roleid"></key>
                <many-to-many class="cn.pojo.User" column="userid"></many-to-many>
            </set>
        </class>
    </hibernate-mapping>
角色配置文件

3、配置核心文件

4、加載核心文件

5、測試

技術分享
package cn.junit;

import static org.junit.Assert.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.junit.Test;

import com.unitl.HibernateUtils;

import cn.pojo.Role;
import cn.pojo.User;

public class Text1 {
//    添加操作
    @Test
    public void test() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            //創建用戶
            User user1 = new User();
            user1.setUser_name("張三");
            user1.setUser_pwd("123");
            User user2 = new User();
            user2.setUser_name("李四");
            user2.setUser_pwd("456");
            //創建角色
            Role r1 = new Role();
            r1.setRole_name("經理");
            r1.setRole_nome("管理");
            Role r2 = new Role();
            r2.setRole_name("秘書");
            r2.setRole_nome("管理");
            Role r3 = new Role();
            r3.setRole_name("保安");
            r3.setRole_nome("管理");
//        用戶擁有角色
            user1.getSetRole().add(r1);
            user1.getSetRole().add(r2);
            user2.getSetRole().add(r2);
            user2.getSetRole().add(r3);
//            保存用戶
            session.save(user1);
            session.save(user2);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }
    /**
     *一般不刪除
     */
    @Test
    public void test2() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
            User user = session.get(User.class, 1);
            session.delete(user);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }
    /**
     * 維護表
     * 讓某個用戶擁有某個角色
     */
    @Test
    public void test3() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
//            查詢id
            User user = session.get(User.class, 4);
            Role role = session.get(Role.class, 4);
//            把用戶保存到set集合裏
            user.getSetRole().add(role);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }
    /**
     * 維護表
     * 讓某個用戶沒有某個角色
     */
    @Test
    public void test4() {
        SessionFactory factory = null;
        Session session = null;
        Transaction ts = null;
        try {
            factory = HibernateUtils.getSessionFactory();
            session = factory.openSession();
            ts = session.beginTransaction();
//            查詢id
            User user = session.get(User.class, 4);
            Role role = session.get(Role.class, 4);
//            把用戶保存到set集合裏
            user.getSetRole().remove(role);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
        }finally{
            session.close();
            factory.close();
        }
    }
}
View Code

Hibernate框架之路(二)多對多多關系