推 powerjj:喔喔感謝@@先推再來仔細看看 03/14 21:21
※ 引述《powerjj (ya)》之銘言:
: 才剛開始接觸hibernate,正在瞭解了其中一些東西的意義
: 但是我還是搞不懂inverse到底是在做什麼="=
: 查了好久網路的說明,似乎使用在雙方"同時"進行連動時,
: 將主從連動的關係反過來,像是一對多的情況改成多對一...
: 但我不太清楚這到底有什麼意義@@?
: 所謂連動不就是雙方都會在內值變化時影響到對方嗎?
: 那這樣從哪個方向有什麼關係嗎?
(inverse 該是 JPA annotation 裡面 mappedBy 的意思吧?)
關係在於每個 relationship 都應該只有一個 mapping
不然的話, 假設 A -> B 是 1-m, 以一個 A 裡面的 List<B>
代表, 而 B->A 是 m-1, 以 B 裡面的 A refernce 代表.
各自做 mapping 的話, 要是搞一輪 update 後, 在 a1 裡的 List<B>
有 b1 的存在, 但 b1 裡的 A ref 指向的是 a2, Hibernate
究竟該信哪一邊?
所以只該以一邊作準, 而另一邊則標記為 inverse.
: 另外我還想請問all-delete-orphan和delete-orphan的意思...
: 我搞不清楚為什麼還有有這兩個,原本的save-update , delete , all
: 三個不就已經涵蓋所有動作了?
: 那這兩個orphan到底能有什麼驚人之舉呢= =?
delete-orphan 會把沒有人 refer 的entity 自動 delete.
不然的話, 以前用 cascade all 只是會把 relationship 刪
走, 東西還是在...
: 網路上的說明我也看了超多的,但大概是程度太差了還不太能理解...
: 拜託hibernate前輩請指導一下吧...萬分感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.238.156.185