Hibernate 一对一、一对多、多对多注解cascade属性的总结
作用:是否級(jí)聯(lián)被注解字段里面的對(duì)象。可選值:javax.persistence.CascadeType.PERSIST, MERGE, REMOVE, REFRESH, DETACH, ALL。可選其中的一個(gè)或多個(gè),選一個(gè)時(shí),花括號(hào)可用可不用。
?
| PERSIST | 級(jí)聯(lián)session的persist操作。假設(shè)Student類(lèi)和teachers字段的@ManyToMany注解上配置有cascade = {CascadeType.PERSIST},那么,當(dāng)stu1對(duì)象set了一個(gè)teachers集合(這個(gè)集合里面的對(duì)象都是瞬態(tài)的),持久化這個(gè)stu1d對(duì)象時(shí),這個(gè)集合里面的所有瞬態(tài)對(duì)象都會(huì)被級(jí)聯(lián)持久化到數(shù)據(jù)庫(kù)。 |
| MERGE | 級(jí)聯(lián)merge操作。道理同上。 |
| REMOVE | 級(jí)聯(lián)remove操作。道理同上。 |
| REFRESH | 級(jí)聯(lián)refresh操作。道理同上。 |
| DETACH | 級(jí)聯(lián)evict操作。道理同上。 |
| ALL | 級(jí)聯(lián)以上所有操作。 |
?
或者:使用Hibernate自身的CascadeType.可選值:
| ALL Includes all types listed here. |
| DELETE Corresponds to the Hibernate native DELETE action. |
| DELETE_ORPHAN Deprecated.? use @OneToOne(orphanRemoval=true) or @OneToMany(orphanRemoval=true) |
| DETACH Corresponds to?CascadeType.DETACH. |
| EVICT Deprecated.? use?CascadeType.DETACH |
| LOCK Corresponds to the Hibernate native LOCK action. |
| MERGE Corresponds to?CascadeType.MERGE. |
| PERSIST Corresponds to?CascadeType.PERSIST. |
| REFRESH Corresponds to?CascadeType.REFRESH. |
| REMOVE Corresponds to?CascadeType.REMOVE. |
| REPLICATE Corresponds to the Hibernate native REPLICATE action. |
| SAVE_UPDATE Corresponds to the Hibernate native SAVE_UPDATE (direct reattachment) action. |
可見(jiàn),除REPLICATE和SAVE_UPDATE是JPA.CascadeType里面沒(méi)有的,其他的都一樣。其中,DELETE對(duì)應(yīng)JPA.CascadeType的REMOVE,DELETE_ORPHAN是不贊成的,DETACH和EVICT對(duì)應(yīng)JPA.CascadeType的DETACH,作用是org.hibernate.Session的evict方法的作用。
REPLICATE:
SAVE_UPDATE:
?
JPA.CascadeType的所有枚舉值,都對(duì)應(yīng)了org.hibernate.Session的方法(DETACH對(duì)應(yīng)evict)。關(guān)于Session的方法,參考另一邊博客:http://www.cnblogs.com/565261641-fzh/p/6658747.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/fuzhihong0917/p/6658748.html
總結(jié)
以上是生活随笔為你收集整理的Hibernate 一对一、一对多、多对多注解cascade属性的总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: userdel、usermod、newg
- 下一篇: Oracle等待事件之Latch Fre