hibernate关系数据库多对多的关系实现

1、多对多级联保存

hibernate关系数据库多对多的关系实现_第1张图片
图片.png

配置文件的添加cascade属性:
在任意一方的set属性 里面配置一次就好:


编写代码实现:

ts = session.beginTransaction();            //创建实体类对象
            Role role = new Role();
            role.setRole_name("管理员");
            role.setRole_memo("管理员描述");
            Role role1 = new Role();
            role1.setRole_name("员工");
            role1.setRole_memo("员工描述");
            Role role2 = new Role();
            role2.setRole_name("保安");
            role2.setRole_memo("保安描述");
            User user = new User();
            user.setUsername("jhon");
            user.setPassword("5550");
            user.setAddress("广州");
            User user1 = new User();
            user1.setUsername("lucy");
            user1.setPassword("520");
            user1.setAddress("广州");
            //创建实体类对象的联系
            user.getRoleSet().add(role);
            user.getRoleSet().add(role1);
            user1.getRoleSet().add(role2);
            user1.getRoleSet().add(role1);
            //保存对象,角色对象会被级联保存
            session.save(user1);
            session.save(user);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }

2、多对多的级联删除(一般不考虑)

首先是在任意一方的映射配置文件中配置cascade属性含有 delete值
然后编写代码实现;

Session session = HibernateUtils.getSession();
        Transaction ts = null;
        try {
            ts = session.beginTransaction();
            User user = (User)session.get(User.class, 13);
            if (user != null) {
                session.delete(user);
            }
            ts.commit();
        }catch (Exception e) {
            ts.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }

3、多对多关系中第三张表的维护

hibernate关系数据库多对多的关系实现_第2张图片
图片.png

具体实现代码如下:

@Test 
    public void testThird() {
        Session session = HibernateUtils.getSession();
        Transaction ts = null;
        try {
            ts = session.beginTransaction();
            //为用户14增加一个管理员角色
            User user14 = (User)session.get(User.class, 14);
            Role role7 = (Role)session.get(Role.class, 7);
            user14.getRoleSet().add(role7);
            //为用户15删除管理员角色
            User user15 = (User)session.get(User.class, 15);
            user15.getRoleSet().remove(role7);
            ts.commit();
        } catch (Exception e) {
            ts.rollback();
            e.printStackTrace();
        } finally {
            session.close();
        }
    }

你可能感兴趣的:(hibernate关系数据库多对多的关系实现)