2014年6月11日 星期三

Java Hibernate 關聯映射 inverse & cascade


有關於 Hibernate 比較有脈絡的介紹,可以參考這邊

用了 Hibernate 好幾年,
目前也只用到 基本配置、資料查詢 (Criteria, HQL, SQL)、基本的Object-Relational Mapping

以前很少,也很懶得去設定 RDBMS 的關聯
都只是用 Single Table 的 CRUD
對於需要關聯的 Table 就用程式做掉

所以為什麼說只用到基本的ORM
因為頂多只會配置繼承映射
也因為如此~
一直沒有去研究映射的屬性

最近剛好做到一個功能,想說試試看多對多關聯
順便也研究一下其他一對多、多對一、一對一的配置方式

基本上這些關聯的用法與使用時機,就不在這裏多做介紹
因為我認為這些可不是三言兩語可以瞭解的
有興趣的朋友可以回去翻大學時的 資料庫管理系統

=~=~=~=~=~=~=~=~=~=~=~=~=主題分隔線=~=~=~=~=~=~=~=~=~=~=~=~=

呼~終於進入主題了

先來說一下這篇主要介紹的兩個屬性 inverse & cascade
請不用浪費時間將它們貼去 google 翻譯
因為只看文字本身的意思根本很難理解他們的用途

inverse (true/false, default false),負責控制關係,默認為false,也就是關係的兩端都能控制
這個屬性是在雙向關聯時使用,如果設定為 true,則控制權為對方

例如:
A, B 物件為雙向多對多關聯,此時A的inverse設定為true,則控制權為B

cascde (default none/save-update/delete),設定關聯持久化對象的操作層級
比如我刪除一個對象,那麼跟它是多對一關係的對像也全部被刪除。


詳述請看此

兩個屬性的比較與舉例可以看此


本來想說自己舉幾個例子跟設定的
但真的很懶,有空再補上吧~


http://www.mkyong.com/hibernate/hibernate-cascade-example-save-update-delete-and-delete-orphan/
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/