JPA基礎知識(四):對映關聯關係
阿新 • • 發佈:2018-12-09
JPA對映關聯關係
- 對映單項多對一的關聯關係(常用)
- 對映單項一對多的關聯關係
- 對映雙向多對一的關聯關係
- 對映雙向一對一的關聯關係
- 對映雙向多對多的關聯關係
一、單項多對一的關聯關係
客戶實體:
Customer【一】 中沒有 Order【多】
訂單實體:
Order【多】 中有 Customer【一】
“多” 中含有外來鍵
測試對映關係:
- 【增】
建議:
儲存“多對一時”,先儲存“一”,後儲存“多”;這樣不會有多餘的update語句。- 【查】
- 【刪】
不能直接刪除 “ 多 ” 的一方,因為有外來鍵約束- 【改】
二、單項一對多的關聯關係
客戶實體:
" 一 " 的有外來鍵
訂單實體:
測試對映關係:
- 【增】
一對多關聯關係進行儲存時,一定會多出update,因為多的一端不會儲存外來鍵列。- 【查】
- 【刪】
- 【改】
三、雙向多對一的關聯關係
雙方的外來鍵列名需要一致;
客戶實體:
訂單實體:
測試對映關係:
- 【增】
在雙向 1 => n 的關聯關係,執行儲存時:
[1.] 若先儲存 n 的一端,在儲存 1 的一端,預設情況下會多出 n 條update語句;
[2.] 若先儲存 1 的一端,則會多出 x 條update語句
建議:
在進行雙向1 => n關聯關係是,建議使用 n 的一方來維護關聯關係, 這樣會有效減少SQL語句。
四、雙向一對一的關聯關係
經理和部門的關係
經理實體:
部門實體:
測試程式碼:
- 【增】
- 【查】
先獲取不維護關係的一方,也一樣。
五、雙向多對多的關聯關係
雙向多對多必須由一方放棄維護多對多關係,否則中間表會出現主鍵重複的問題。
商品和類別的關係
類別實體類
商品表實體類
測試對映程式碼:
-【增】
-【查】