分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

Hibernate框架学习(七)——多对多关系

发布时间:2023-09-06 01:42责任编辑:彭小芳关键词:Hibernate

一、关系表达

1、表中的表达

2、实体中的表达

3、orm元数据中的表达

在User.hbm.xml中添加:

在Role.hbm.xml中添加(与上相反):

二、操作关联属性

1、保存员工及角色

 1 public class Demo { 2 ????@Test 3 ????//保存员工以及角色 4 ????public void fun1(){ 5 ????????//1.获得session 6 ????????Session session = HibernateUtils.openSession(); 7 ????????//2.开启事务 8 ????????Transaction tx= session.beginTransaction(); 9 ????????//3.操作10 ????????//=================================11 ????????//1>创建两个User12 ????????User u1=new User();13 ????????u1.setUser_name("张三");14 ????????15 ????????User u2=new User();16 ????????u2.setUser_name("苏牧");17 ????????18 ????????//2>创建两个Role19 ????????Role r1=new Role();20 ????????r1.setRole_name("总裁");21 ????????22 ????????Role r2=new Role();23 ????????r2.setRole_name("保安");24 ????????25 ????????//3>用户表达关系26 ????????u1.getRoles().add(r1);27 ????????u1.getRoles().add(r2);28 ????????29 ????????u2.getRoles().add(r1);30 ????????u2.getRoles().add(r2);31 ????????//4>角色表达关系32 ????????r1.getUsers().add(u1);33 ????????r1.getUsers().add(u2);34 ????????35 ????????r2.getUsers().add(u1);36 ????????r2.getUsers().add(u2);37 ????????38 ????????//5>调用Save方法一次保存39 ????????session.save(u1);40 ????????session.save(u2);41 ????????session.save(r1);42 ????????session.save(r2);43 ????????//=================================44 ????????//4.提交事务45 ????????tx.commit();46 ????????//5.关闭资源47 ????????session.close();48 ????}49 }

直接执行会报错,因为在多对多关系中,一定要选择一方放弃维护关系!(可以选择去掉角色表达关系的四行代码)

2、为张三新增角色(只需要修改步骤三操作里面的内容)

1      //1>获得张三用户2 ????????User user = session.get(User.class, 1l);3 ????????//2>创建角色-公关4 ????????Role r=new Role();5 ????????r.setRole_name("公关");6 ????????//3>将角色添加到用户中7 ????????user.getRoles().add(r);8 ????????//4>将角色转换为持久化9 ????????session.save(r);

3、为张三解除一个角色(也只需要修改步骤三操作里面的内容)

1      //1>获得张三用户2 ????????User user = session.get(User.class, 1l);3 ????????//2>获得要操作的角色对象(保安)4 ????????Role r=session.get(Role.class, 2l);5 ????????//3>将角色从用户的角色集合中移除6 ????????user.getRoles().remove(r);

三、进阶操作

1、inverse属性

基于上述操作1保存操作,如果不去掉任何代码,在配置文件Role.hbm.xml中添加inverse属性,并设置为true,同样也能完成操作。

2、级联属性

基于上述操作2新增操作,可以选择去掉最后的save操作,在配置文件User.hbm.xml中使用cascade属性,保存用户时同时保存相应角色。

Hibernate框架学习(七)——多对多关系

原文地址:https://www.cnblogs.com/cxq1126/p/8446915.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved