Hibernater学习笔记(五)

上次学习一对多查询,今天学习多对多查询
场景:用户和角色的关系,一个用户可以是多个角色,一个角色可以有多个用户

  • pojo类
    User.java
public class User {
   private int uid;
    private String username;
    private String password;
    private String address;
    /**
     *一个用户多个角色
     */
    private Set roles = new HashSet();
....省略get@set方法....
}

Role.java

public class Role {
    private Integer ro_id;
    private String ro_name;
    /**
     *角色描述
     */
    private String ro_memo;

    /**
     * 一个角色多个用户
     * @retu     */
    private Set users = new HashSet();
....省略get@set方法.....
}
  • 配置文件
    User.hbm.xml

    

    
        
            
        
        
        
        
        
        
            
            
            
            
        
    

Role.hbm.xml


    

    
        
            
        
        
        
        
            
            
            
        
    

Hibernater学习笔记(五)_第1张图片
创建成功

1.多对多级联保存

  • 设置user用户配置文件

            
            
            
            
        
  • 添加代码
public void TestMany_to_Many_add(){
        Session session = null;
        Transaction transaction=null;
        try{
            session = HibernateUtils.getSessionObject();
            transaction = session.beginTransaction();
            User user1 = new User();
            user1.setUsername("张用户");
            user1.setPassword("12345");
            user1.setAddress("西安");

            User user2 = new User();
            user2.setUsername("王用户");
            user2.setPassword("789456");
            user2.setAddress("广东");

            Role r1 = new Role();
            r1.setRo_name("总经理");
            r1.setRo_memo("总经理描述");
            Role r2 = new Role();
            r2.setRo_name("保安");
            r2.setRo_memo("保安描述");
            Role r3 = new Role();
            r3.setRo_name("司机");
            r3.setRo_memo("司机描述");
            //给用户1创建r1和r2的角色
            user1.getRoles().add(r1);
            user1.getRoles().add(r2);
            //给user2创建r2和r3的角色
            user2.getRoles().add(r2);
            user2.getRoles().add(r3);
            //保存用户
            session.save(user1);
            session.save(user2);
            transaction.commit();
        }catch(Exception e){
            e.printStackTrace();
            transaction.rollback();
        }finally {
            session.close();
        }
    }
Hibernater学习笔记(五)_第2张图片
多对多添加

2.维护第三张表

用户和惧色多对多关系,维护关系通过第三张表维护
场景:为某个用户添加某个角色

 @Test
    public void manyToManyTableTest(){
        Session session = null;
        Transaction transaction=null;
        try{
            session = HibernateUtils.getSessionObject();
            transaction = session.beginTransaction();
            User user =  session.get(User.class,3);
            Role role = session.get(Role.class,2);
            user.getRoles().add(role);
            transaction.commit();
        }catch(Exception e){
            e.printStackTrace();
            transaction.rollback();
        }finally {
            session.close();
        }
    }
Hibernater学习笔记(五)_第3张图片

删除用户和角色的关系

 @Test
    public void manyToManyDeleteTest(){
        Session session = null;
        Transaction transaction=null;
        try{
            session = HibernateUtils.getSessionObject();
            transaction = session.beginTransaction();
            User user =  session.get(User.class,2);
            Role role = session.get(Role.class,3)       ;
            //让用户移除某个操作
            user.getRoles().remove(role);
            transaction.commit();
        }catch(Exception e){
            e.printStackTrace();
            transaction.rollback();
        }finally {
            session.close();
        }
    }
Hibernater学习笔记(五)_第4张图片
删除用户和角色关系

上一篇:Hibernater学习笔记(四)
当前文集 :Hibernate框架学习
本笔记hibernate案例:github地址

你可能感兴趣的:(Hibernater学习笔记(五))