3 JPA物件關係對映 級聯操作

2021-10-04 01:50:24 字數 2428 閱讀 1356

物件對映關係分為單向關係和雙向關係,單向關係只在一方物件上存在對方物件,雙向關係是在雙方物件上存在彼此物件。

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 ...