hibernate的關係配置中有兩個重要的配置項 reverse 和 cascade
inverse:在雙向關聯的情況下面使用,單向關聯的時候不需要使用reverse配置。
cascade:用來設定相互關聯的物件之間的級聯操作。
一對一關係
...一對多的關係
一對多的關係可以分為三種。
以班級(一)--學生(多)為例
1)多對一單向,是單向引用,多的一方引用少的一方,不會建立單獨的關聯表
由多的一方維護關係,多的一方裡面包含乙個少的一方的物件,關係的配置在多的一方的hbm.xml檔案之中,而不是在hibernate的配置檔案之中。
不設定級聯(cascade)
插入學生的時候報錯,需要先插入班級再插入學生
當刪除學生的時候正常,不會刪除關聯的班級
插入班級的時候正常
刪除班級的時候報錯,提示要先刪除學生
設定級聯(cascade)
插入學生的時候,框架會自動先插入對應的班級,再插入學生
刪除班級的時候,框架自動刪除所屬這個班級下的所有學生,再刪除班級(測試沒有成功,還是出現提示錯誤)
從兩個端儲存的順序一致,儲存順序:先儲存一的一端,拿到一的一端的id,再儲存多的一端
2)一對多單向,也是單向引用,少的一方引用多的一方,不會建立單獨的關聯表
由少的一方維護關係,少的一方包含乙個多的一方的集合,關係配置在少的一方的hbm.xml檔案之中,而不是在hibernate的配置檔案之中。
不設定級聯
在插入班級的時候報錯,需要先插入關聯的學生物件,再插入班級。
在刪除班級的時候正常,不會刪除關聯的學生
在插入學生的時候正常
在刪除學生的時候正常,不會刪除關聯的班級
設定級聯
插入班級的時候,框架會自動先插入關聯的學生,再插入班級。
從兩個端儲存的順序一致,儲存順序:先儲存多的一端,再儲存一的一端,最後將一的一端的id設定到多的一端
小結:無論是多對一,還是一對多,儲存的時候,有如下原則:
先儲存對端,再儲存本端
3)一對多雙向,雙向引用,多的一方會引用少的一方,少的一方也會引用多的一方。不會建立單獨的關係表。
雙方都設定級聯。
這裡的雙向指的是雙方都有對方的引用,而不是指兩方同時維護關係。預設是少的一方維護關係,可以通過inverse設定由多的一方維護關係。多的一方包含少的一方的物件,少的一方包含多的一方的集合。關係需要在多的一方的hbm.xml檔案和少的一方的hbm.xml檔案中同時配置。
不加inverse的情況下,預設是少的一方維護關係,即等同於一對多單向。如果設定inverse為true,則為多的一方維護關係,即等同於多對一單向。
hibernate物件關係
hibernate學習第二天總結 一對一的關係有 共享主鍵見表方式 唯一外來鍵見表方式 共享主鍵建表方式 即一張表的主鍵,做了主鍵又做了外來鍵 person類裡面有乙個passport類的關聯屬性,名字叫做passport,根據傳遞性持久化,要儲存person物件的時候,同時要儲存 passport...
hibernate物件關係對映
一對一主鍵關聯對映 單向person idcard 原理 讓兩個實體的主鍵一樣,這樣就不需要加入多餘的字段了。舉例 乙個人 person 擁有一張身份證 idcard 一對一主鍵關聯對映 雙向person idcard 原理 與上面單項相同,只是需要兩端都需要維護。舉例 同上。person的對映檔案...
Hibernate 物件關係對映
1 例如使用者和組的關係就是多對一關係,多個使用者對應乙個組。2 將實體對映成表。多對一關聯對映在多的一端來維護關聯字段,在使用者一端來維護關係字段 user.hbm.xml檔案 group.hbm.xml檔案 3 在這裡我們看的 就看 hbm.mlx 因為對於類之間的關聯,在實現時,乙個類作為另乙...