hibernate_day03_13_多对多操作(维护第三张表)

来源:互联网 发布:交通数据开放平台 编辑:程序博客网 时间:2024/05/29 03:34


维护第三张表关系
1 用户和角色多对多关系,维护关系通过第三张表维护


2 让某个用户有某个角色
第一步 根据id查询用户和角色

//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);


第二步 把角色放到用户里面
(1)把角色对象放到用户set集合

// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);



//多对多 维护第三张表@Testpublic void testTable(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}



3 让某个用户没有某个角色
第一步 根据id查询用户和角色
 


第二步 从用户里面把角色去掉
(1)从set集合里面把角色移除
 
// 让某个用户没有有某个角色User user = session.get(User.class, 2);Role role = session.get(Role.class, 3);//2 从用户里面把角色去掉user.getSetRole().remove(role);


com.hlg.hibernatetest.HibernateManytoMany.java


package com.hlg.hibernatetest;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.junit.Test;import com.hlg.entity.Customer;import com.hlg.entity.LinkMan;import com.hlg.manytomany.Role;import com.hlg.manytomany.User;import com.hlg.utils.HibernateUtils;public class HibernateManytoMany {//多对多 级联保存@Testpublic void testSave(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();//添加两个用户,为每个用户添加两个角色//1 创建对象User user1 = new User();user1.setUser_name("lucy");user1.setUser_password("123");User user2 = new User();user2.setUser_name("mary");user2.setUser_password("456");Role r1 = new Role();r1.setRole_name("总经理");r1.setRole_memo("总经理");Role r2 = new Role();r2.setRole_name("秘书");r2.setRole_memo("秘书");Role r3 = new Role();r3.setRole_name("保安");r3.setRole_memo("保安");//2 建立关系,把角色放到用户里面// user1 -- r1/r2user1.getSetRole().add(r1);user1.getSetRole().add(r2);// user2 -- r2/r3user2.getSetRole().add(r2);user2.getSetRole().add(r3);//3 保存用户session.save(user1);session.save(user2);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}//多对多 维护第三张表@Testpublic void testTable(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户有某个角色//让lucy有经纪人角色//1 查询lucy和经纪人User lucy = session.get(User.class, 1);Role role = session.get(Role.class, 1);//2 把角色放到用户的set集合里面lucy.getSetRole().add(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}//多对多 维护第三张表@Testpublic void testTableDelete(){SessionFactory sessionFactory = null;Session session = null;Transaction tx = null;try{//得到sessionFactorysessionFactory = HibernateUtils.getSessionFactory();//得到sessionsession = sessionFactory.openSession();//开启事务tx = session.beginTransaction();// 让某个用户没有有某个角色User user = session.get(User.class, 2);Role role = session.get(Role.class, 3);//2 从用户里面把角色去掉user.getSetRole().remove(role);//提交事务tx.commit();}catch(Exception e){//回滚事务tx.rollback();}finally{//关闭session.close();sessionFactory.close();}}}




阅读全文
0 0