Hibernate关联关系中的CRUD_Cascade_Fetch

一、设定cascade,fetch可以设定在持久化时对于关联对象的操作(cud是cascade,R归fetch管理)

二、cascade仅仅是帮我们省了编程的麻烦,不要把它的作用看得太大,cascade的属性指明做什么操作的时候关联对象是绑定在一起的(比如persist操作)

三、cascade的铁律
1、双向关系在程序中要设定双向关联(比如说多对一时,设置了一那一方的add,还必须设置多那方的set,不然多的那方就没有外键关联)
2、Hibernate建议在@ManytoOne中指定级联没什么意义,一般都是在@OnetoMany关系中比较有用,因为级联操作应该是由主表记录传播到从表;@ManytoOne不支持指定Hibernate的cascade,不过也可以直接用Hibernate的注解。
3、如果从表记录完全限制在主表记录之内,可以指定cascade=CascadeType.All,在配合orphanRemoval=TRUE即可

四、铁律:双向mappedBy(即在一对多双向时,在一对多的那方使用,其他的没关系,任何一方都行)

五、Fetch铁律:
1、铁律:Hibernate默认在多对一的那方使用eager,在一对多的那方使用lazy。
2、双向不要两边设置eager(会有多余的sql语句发出,即会把所有能关联到的对象都查出来)
3、对多方设置fetch的时候要谨慎,结合具体应用,一般用lazy不用eager,特殊情况(多方数量不多的可以考虑,提高效率的时候可以考虑)

六、要想删除或者更新,先做load,除了精确知道ID之外,还有就是直接用HQL语句

七、如果想消除关联关系,先设定关系为null,再删除对应记录,如果不删除记录,该记录就变成垃圾数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值