
視頻中截的圖,在CRUD操作中,Cascade僅僅只是影響了非查詢,而查詢歸Fecth管理.
如果雙向關系中都設定Cascade為ALL的時候,碼代碼的確會省很多力氣.做了一個小實驗,一對多和多對一的雙向關聯,
在刪除一的一方數據時,可以直接把所有多的一方關聯的數據全部刪掉. 平常我們刪一個一的數據,總是要把和它關聯的所有數據先刪掉才可以刪除,而雙方都設Cascade為ALL后,刪除一,自動就把所有和一關聯的多刪掉. 這也是正常思維的邏輯.
另外.Fecth...感覺作用不是太大.
對多的一方,默認為Eager、對一的一方默認為Lazy.
一般讀取的時候,實際情況也就是默認值. 偶爾會有些特殊情況,比方說.讀取某個用戶數據的時候,想把這個用戶的所有權限取出來,這個權限的數據...最多最多... 我算它100條...這時候把如果一的一方的Fecth值設為Eager就可以做到.
再就是圖中說的幾個"鐵律"了,雙向關系的設定,只是在編程中方便很多. 如果愣是不設,那也行.. 就一個一個set了.
mappedBy這個屬性很有用!一對多和多對一的雙向,需要映射到多的一方的引用,可是...mappedBy屬性需要設置在一的一方@OneToMany(mappedBy="").................切記了! 多對多的雙向, 在誰那都一樣!
Fetch的鐵律.不要兩邊都設Eager.其實默認值就是這樣的.