物件對映關係分為單向關係和雙向關係,單向關係只在一方物件上存在對方物件,雙向關係是在雙方物件上存在彼此物件。
public
class
department
implements
serializable
)@joincolumn
private list
employeelist;
}
在沒有@joincolumn
時,將多增加乙個中間關係表,由此表來維護兩個物件關係,增加之後只有兩個表,由employee表維護關係。預設情況下jpa會使用主鍵來做關聯,並在子表中增加外來鍵約束。
在設計表結構時,主鍵一般會使用自增id,但在做子表關聯時由於分布式結構原因不想使用自增id來做關係維護,則可自定義字段code來維護關係,如下:
public
class
department
implements
serializable
)@joincolumn
(name =
"departmentcode"
, referencedcolumnname =
"departmentcode"
)private list
employeelist;
}
在employee表中會增加乙個department_code欄位來維護關聯關係。
注意:從add操作中的sql可以看出,employee是先insert之後,再去update關係欄位的,多一步update。
hibernate: insert
into department (department_code, department_name)
values
(?, ?)
hibernate: insert
into employee (employee_code, employee_name)
values
(?, ?)
hibernate: insert
into employee (employee_code, employee_name)
values
(?, ?)
hibernate: update employee set department_code=? where employee_id=?
hibernate: update employee set department_code=? where employee_id=?
public
class
department
implements
serializable
"department"
)private list
employeelist;
}public
class
employee
注意事項:
1.在add操作中子物件employee必須設定主物件,否則資料庫層面是沒有維護外來鍵關係的,如:
@test
public
void
add(
)
2.此種設定是不需要額外update關係的
hibernate: insert
into department (department_code, department_name)
values
(?, ?)
hibernate: insert
into employee (department_department_id, employee_code, employee_name)
values
(?, ?, ?)
hibernate: insert
into employee (department_department_id, employee_code, employee_name)
values
(?, ?, ?)
3.關閉子物件中的父物件tostring,避免無限迴圈呼叫
cascadetype.refresh:級聯重新整理(較少使用),在併發的場景下避免髒資料
cascadetype.detach:級聯脫管(較少使用)
cascadetype.all:以上全部,需要根據實際情況謹慎設定,以免產生混亂
JPA 物件關係對映之關聯關係對映策略
關聯關係對映 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多幾種關係。細分起來他們又有單向和雙向之分。王 漢敏,軟體工程師,ibm 2013 年 6 月 17 日 開始您的試用 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多...
spring boot 資料訪問3 JPA
1 匯入包 org.springframework.boot spring boot starter data jpa spring datasource username root password 123456 url jdbc mysql driver class name com.mysql...
3 JPA中的主鍵生成策略
通過 annotation 註解 來對映 hibernate 實體的,基於 annotation 的 hibernate 主鍵標識為 id,其生成規則由 generatedvalue設定的。這裡的 id和 generatedvalue都是 jpa 的標準用法。jpa 提供的四種標準用法為table ...