博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate 多对多 最佳实践
阅读量:5906 次
发布时间:2019-06-19

本文共 2438 字,大约阅读时间需要 8 分钟。

首先 看看我们 ER 画画 :盖  一对一 。一对多 。多对多 的关系

对多 在 hibernate 中的 实现 :  一个 用户user ,拥有 多个角色 role。 一个 角色 属于 多个 用户user

事实上 多对多 就 是双向的 一对多。我们使用一个 中间表 user_role 来保存 user ,role 的 主键,来 确定 它们的 关联关系,

降低 数据的低级冗余。提高 可扩展 性

User.java 及 映射文件

public class User implements java.io.Serializable {    private static final long serialVersionUID = 1636556781734875928L;    private Long id;    private String username;    private String password;    private String state;    private Date createTime;    private IdCard idCard;    private Set
userLogs; private Set
roles;}

Role.java 及 映射文件

import java.util.Set;public class Role implements java.io.Serializable {    private static final long serialVersionUID = -5094780060641842069L;    private Long id;    private String roleName;    private String roleSign;    private String description;    private Set
users;}

多对多 最佳实践:

我们能够把 user 看成 主表, role 看成 从表。

在 主表 user 多对多中 设置  cascade="save-update" ,表明 在 新增或 更改 user 的 时候 会级联 操作role。

新增 一个 用户 user。和他的role, hibernate 是 先 插入 user , 在 插入 role ,然后再 中间表 加入 数据;

而在删除user 中 ,则 仅仅删除中间表 和 user

 

这不正是我们想要的吗, 

我们 当然不想在 删除 一个 用户user  的时候 把 它 相应的 角色 role 删除。由于  这个 角色 role 可能 是其它 用户的 角色。

仅仅要解除 关系 就可以;

而在角色 role 中。我们设置 inverse="true" ,放弃维护 关系,由于 我们通常是 为 用户 user 分配 角色 role ,降低不必要的更新语句。

到这里 讲完了 一对一 。一对多 ,多对多的关系  映射 及 一些比較好的 配置。 应该 依据 业务 。灵活应用 hibernate 。hibernate 是 一个 很 好的orm 映射框架。

在 我 看来 比 mybatis 更 灵活 , 更 高效 ,前提 是 你 要熟练 它, 兴许 有时间会 将 一些 hibernate 优化 有关 操作。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4707795.html,如需转载请自行联系原作者

你可能感兴趣的文章
我的友情链接
查看>>
eclipse 去掉 js 校验
查看>>
ASA防火墙5 安全context
查看>>
Selenium-Python小记(一)
查看>>
我最喜爱的新工具:Oracle VM VirtualBox
查看>>
我的开源项目:Android图片剪裁库
查看>>
ceph常见故障-ceph activate,osd无权限
查看>>
Shell 获取 Linux 服务器的 MAC(通用,不依赖网卡名称)
查看>>
C语言程序设计复习指导
查看>>
Linux 文件通配符与命令行扩展
查看>>
作为程序员你必须要知道的Android特效!
查看>>
pl/sql三种特殊数据类型
查看>>
zabbix server is not running解决办法
查看>>
编码之道:取个好名字很重要
查看>>
微信公众号二次开发(二)-注册新浪SAE
查看>>
Javascript实现拼图算法
查看>>
简单学习数据库索引
查看>>
STL中各类容器的API map
查看>>
我的友情链接
查看>>
linux配置ssh互信
查看>>