一、关系表达

1、表中的表达

2、实体中的表达

3、orm元数据中的表达

在User.hbm.xml中添加:

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

二、操作关联属性

1、保存员工及角色

 public class Demo {
@Test
//保存员工以及角色
public void fun1(){
//1.获得session
Session session = HibernateUtils.openSession();
//2.开启事务
Transaction tx= session.beginTransaction();
//3.操作
//=================================
//1>创建两个User
User u1=new User();
u1.setUser_name("张三"); User u2=new User();
u2.setUser_name("苏牧"); //2>创建两个Role
Role r1=new Role();
r1.setRole_name("总裁"); Role r2=new Role();
r2.setRole_name("保安"); //3>用户表达关系
u1.getRoles().add(r1);
u1.getRoles().add(r2); u2.getRoles().add(r1);
u2.getRoles().add(r2);
//4>角色表达关系
r1.getUsers().add(u1);
r1.getUsers().add(u2); r2.getUsers().add(u1);
r2.getUsers().add(u2); //5>调用Save方法一次保存
session.save(u1);
session.save(u2);
session.save(r1);
session.save(r2);
//=================================
//4.提交事务
tx.commit();
//5.关闭资源
session.close();
}
}

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

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

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

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

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

三、进阶操作

1、inverse属性

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

2、级联属性

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

最新文章

  1. Util应用程序框架公共操作类(十):可空值类型扩展
  2. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q142-Q143)
  3. HTML 学习笔记 JavaScript (String)
  4. review again and again
  5. MyBatis知多少(11)企业数据库
  6. Codevs 5126 推销员 2015年NOIP全国联赛普及组
  7. 转移python
  8. eclipse安装CDT插件遇到的问题
  9. 直接下载adobe的完整安装包
  10. Thrift 使用方法
  11. 前端面试题总结:HTML5,JS,CSS3,兼容性。
  12. MySQL数据库—查询基础,简单查询,条件查询,对查询结果排序
  13. Android 字体修改,所有的细节都在这里 | 开篇
  14. C#的Lock
  15. ios设置音乐audio自动播放
  16. tomcat cluster session同步时保存map数据遇到的问题
  17. stimulus(6300✨)
  18. dos2unix 批量转化文件
  19. python数据结构与算法 29-1 哈希查找
  20. 高性能网站架构缓存——redis集群

热门文章

  1. 修改XtraMessageBox的内容字体大小
  2. 如何避免命令 rm -rf 的悲剧
  3. windows 命令行 for 用法
  4. Tab切换效果(修改)
  5. jquery 去重
  6. 导出MNIST的数据集
  7. Java基础学习总结(61)——Java项目开发要注意的60个问题
  8. JavaScript 事件对内存和性能的影响
  9. nodejs-循环
  10. 解决VTune错误PMU resources currently being used by another profiling tool or process