Hibernate学习一:Hibernate注解CascadeType
http://zy19982004.iteye.com/blog/1721846
————————————————————————————————————————————————————————
一.概念
- 现有一场景:一个管理员可以管理多个网吧,一个网吧可以被多个管理员管理。从中抽象出一个多对多的例子user-bar。
- 主控方user:多对多里面里面会有第三张表user_bar,由主控方维护这里面的外键记录,也就是创建一个user的时候必须指定其管理的bar。
- 被控方bar:没有权利更新外键记录。单独创建一个bar,不需要也不能指定其属于哪个user。
二. CascadeType
- CascadeType.MERGE:级联更新。创建一个user的时候,指定其管理哪些bar,如果某一个bar不存在,会在创建user的时候一起创建。
- CascadeType.PERSIST:级联保存。创建一个user的时候,指定其管理哪些bar,如果某一个bar不存在,抛出异常。所以指定其管理哪些bar必须是事先存在的。
- CascadeType.REMOVE:级联删除。删除一个user的时候,会删除它管理的bar,最终是user_bar里面删了,bar里面也删了。如果不指定CascadeType.REMOVE,只删user_bar里面。
- CascadeType.REFRESH:级联刷新。第一次查询某一user和第二次查询同一user之间,删除了某一bar,CascadeType.REFRESH是的任何时候看到的都是最新的记录(两次查询结果不一样)。
- CascadeType.ALL:包含以上所有。
三. 使用
- 根据具体的场景要指定不同的Type。
- user和bar之间的关系,并没有说user不存在了,网吧就不存在,所以不能用CascadeType.REMOVE。
- 保存一个user的时候,指定他能够管理的网吧必须是已经存在的,所以CascadeType.MERGE和CascadeType.PERSIST中用CascadeType.MERGE。
四. 吐槽
第一次接触CascadeType,去网上找资料的时候,NM,全部是一样的文章,甚至连错误都是一起copy过去的,真不赞同这样的学习方式。
Hibernate学习一:Hibernate注解CascadeType的更多相关文章
- Hibernate学习笔记-Hibernate HQL查询
Session是持久层操作的基础,相当于JDBC中的Connection,通过Session会话来保存.更新.查找数据.session是Hibernate运作的中心,对象的生命周期.事务的管理.数据库 ...
- Hibernate学习0.Hibernate入门
Hibernate是什么 面向java环境的对象/关系数据库映射工具. 1.开源的持久层框架. 2.ORM(Object/Relational Mapping)映射工具,建立面向对象的域模型和关系数据 ...
- hibernate学习之Hibernate API
1. Hibernate Api分类 1)提供访问数据库的操作(如保存,更新,删除,查询)的接口.这些接口包括:Session, Transaction,,Query接口. 2)由于配置Hiberna ...
- Hibernate学习之Hibernate流程
Hibernate的核心组件 在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate. ...
- 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
近期我也是有点郁闷,究竟是程序中处理关联关系.还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这样的关联关系的话.自己去维护这样的约束.这样的非常乐观的一种做法!或者是直接在数据库中处理这 ...
- Hibernate学习之类级别注解
© 版权声明:本文为博主原创文章,转载请注明出处 类级别注解: 1. @Entity 实体:表示映射实体类,使用@Entity时必须指定实体类的主键属性 @Entity(name="&quo ...
- Hibernate学习笔记:注解@OneToMany和@ManyToOne的单独使用问题 不成对使用
以某个实际场景为例,现在两张表:用户表User 订单表Order:很显然用户对订单是一对多的关系.二者注解如下 用户表User @Entity @Table(name="users" ...
- Hibernate学习之——Hibernate环境搭建
之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...
- Hibernate学习之hibernate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hi ...
- Hibernate学习笔记-Hibernate关系映射
1. 初识Hibernate——关系映射 http://blog.csdn.net/laner0515/article/details/12905711 2. Hibernate 笔记8 关系映射1( ...
随机推荐
- hive splict, explode, lateral view, concat_ws
hive> create table arrays (x array<string>) > row format delimited fields terminated by ...
- ios处理键盘
#pragma mark - Keyboard - (void)addKeyboardNoti { [[NSNotificationCenter defaultCenter] addObserver: ...
- Spring MVC+Hibernate JPA搭建的博客系统项目中所遇到的坑
标签: springmvc hibernate 2016年12月21日 21:48:035133人阅读 评论(0) 收藏 举报 分类: Spring/Spring MVC(6) Hibernate ...
- Android log 日志分析
一. Log 日志中 Bug 类型 程序异常强制关闭: Force Close ,Fatal 程序无响应: Application Not Response , ANR(应用无响应).一般是主线程超时 ...
- cygwin下安装c语言开发环境
1.到官网cygwin.com下载安装程序. 2.添加清华的cygwin镜像:https://mirrors.tuna.tsinghua.edu.cn/cygwin/ 3.在安装:vim,git,gc ...
- [Leet Code]Path Sum II
此题如果 #1 和 #4 判断分支交换,大集合就会超时(因为每次对于非叶子节点都要判断是不是叶子节点).可见,有时候if else判断语句也会对于运行时间有较大的影响. import java.uti ...
- 解决Unity协程无法同步返回的问题
Unity的协程是轻量的异步解决方案,但是每调用一次yield就必须等下一帧才能继续,这一点带来了很多约束. 比如如下代码: void OnEnable() { StartCoroutine(_Do( ...
- [sql]生产库全备/mysql库体积大小查看
将生产db全备到内网某机器 两个思路: 1, 直接内网mysqldump导出. 因为阿里云的rds只有私网ip,所以办公网机器无法直接连到rds执行mysqldump 解决: 通过ssh tunnel ...
- Daemontools和Supervisor管理linux常驻进程
linux主要使用supervise来管理常驻进程.基于supervise的两个比较重要的工具是Daemontools和Supervisor. 实际上,supervise也算Daemontools的一 ...
- FATAL ERROR: Could not find ./share/fill_help_tables.sql
[root@c01 mysql-5.6.33]# /apps/mysql-5.6.33/scripts/mysql_install_db --datadir=/data/my_db --user=my ...