https://www.jianshu.com/p/e8caafce5445

【在一切开始之前,我要先告诉大家:慎用级联关系,不要随便给all权限操作。应该根据业务需求选择所需的级联关系。否则可能酿成大祸。切记】

  • CascadeType.PERSIST
    官方文档的说明:Cascade persist operation
    看到网上很多博客对这一枚举值的解释是:级联持久化(保存)操作(持久保存拥有方实体时,也会持久保存该实体的所有相关数据。)
    我的内心OS是:妈蛋。我也知道是级联persist操作啊关键是怎么操作啊。妈蛋。拥有方实体是个什么玩意儿,该实体又是个什么玩意儿。
    经过实践检验,我的理解是:给当前设置的实体操作另一个实体的权限。这个理解可以推广到每一个CascadeType。因此,其余CascadeType枚举值将不再一一详细解释。
    For example:
public class Student {
@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)
private Set<Course> courses = new HashSet<>();
//其他代码略。
}

  

可以看到,我们在上面的代码中给了Student对Course进行级联保存(cascade=CascadeType.PERSIST)的权限。此时,若Student实体持有的Course实体在数据库中不存在时,保存该Student时,系统将自动在Course实体对应的数据库中保存这条Course数据。而如果没有这个权限,则无法保存该Course数据。

  • CascadeType.REMOVE
    Cascade remove operation,级联删除操作。
    删除当前实体时,与它有映射关系的实体也会跟着被删除。
  • CascadeType.MERGE
    Cascade merge operation,级联更新(合并)操作。
    当Student中的数据改变,会相应地更新Course中的数据。
  • CascadeType.DETACH
    Cascade detach operation,级联脱管/游离操作。
    如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了。它会撤销所有相关的外键关联。
  • CascadeType.REFRESH
    Cascade refresh operation,级联刷新操作。
    假设场景 有一个订单,订单里面关联了许多商品,这个订单可以被很多人操作,那么这个时候A对此订单和关联的商品进行了修改,与此同时,B也进行了相同的操作,但是B先一步比A保存了数据,那么当A保存数据的时候,就需要先刷新订单信息及关联的商品信息后,再将订单及商品保存。(来自良心会痛的评论)
  • CascadeType.ALL
    Cascade all operations,清晰明确,拥有以上所有级联操作权限。

 

最新文章

  1. ZeroC Ice启用SSL通讯的配置
  2. android studio上的基本动画实现(第一篇)
  3. Python 函数嵌套
  4. GoLang之基础
  5. IOS - Objective-C NSArray和NSMutableArray的详解 使用
  6. ASP.NET 访问路径 错误提示 HTTP 错误 404.8 原来路径中包含bin目录被拒绝
  7. [Sql Server2008]树结构的递归算法
  8. zookeeper session tracker机制分析
  9. Apache Jmeter(2)
  10. Cookie的前后台应用
  11. 嵌入式Linux-GNU Make 使用手册(中译版)
  12. Yosemite重置Dock的命令
  13. reason: &#39;Could not instantiate class named MKMapView&#39;
  14. 更快的方式实现PHP数组去重(转)
  15. mysql添加mcafee 审计插件
  16. doubango(1)--从协议栈结构说起
  17. [原]C#与非托管——初体验
  18. HTML、CSS、JS 样式
  19. OpenCV二维Mat数组(二级指针)在CUDA中的使用
  20. python3.* socket例子

热门文章

  1. PHP html mysql js 乱码问题,UTF-8(乱码)
  2. MS11-050安全漏洞
  3. vscode中live server插件的Go Live不显示问题
  4. jQuery中清空元素.empty()和.html(&#39;&#39;),两种方法的对比
  5. ubuntu查看文件和文件夹大小
  6. tomcat8.5之后版本,远程无法登录管理页面
  7. Oracle常用函数——COALESCE
  8. 如何开启Intel HAXM功能
  9. LOJ6284 数列分块入门8(分块)
  10. (zhuan) 自然语言处理中的Attention Model:是什么及为什么