JPA的關係及配置

2021-09-27 08:03:52 字數 3375 閱讀 1434

//一方

@entity

public

class

product

不管怎麼儲存(改變persist**位置),它都會至少執行5條sql語句完成儲存功能。

而完成同樣的功能,我們使用單向多對一可以優化為3條。 因此,我們一般不使用單向一對多

原因就是現在外來鍵是由一方來處理,一方處理必須發出額外的update語句

@test

public

void

get(

)throws exception

else

entitymanager.

close()

;}

1.配置集合的時候必須配置介面

2.一般都是使用set介面,只有組合關係使用list介面

3.使用list介面的時候可以配置@order進行排序

4.實體類不能使用final修飾(不能繼承)

@onetomany

"dir"

)private list

products =

newarraylist

<

>()

;

@entity

public

class

productdir

, inversejoincolumns =

)private set

roles =

newhashset

<

>()

;}

role

@entity

@table

(name=

"t_role"

)public

class

role

//3個使用者 2個角色

user user1 =

newuser()

; user1.

setname

("哈哈");

user user2 =

newuser()

; user2.

setname

("xixi");

user user3 =

newuser()

; user3.

setname

("啦啦");

role role1 =

newrole()

; role1.

setname

("演員");

role role2 =

newrole()

; role2.

setname

("導演");

//設定關係

user1.

getroles()

.add

(role1)

; user2.

getroles()

.add

(role1)

; user3.

getroles()

.add

(role1)

; user1.

getroles()

.add

(role2)

; user2.

getroles()

.add

(role2)

;//儲存資料

entitymanager entitymanager = jpautils.

getentitymanager()

; entitymanager.

gettransaction()

.begin()

; entitymanager.

persist

(user1)

; entitymanager.

persist

(user2)

; entitymanager.

persist

(user3)

; entitymanager.

persist

(role1)

; entitymanager.

persist

(role2)

; entitymanager.

gettransaction()

.commit()

;

role方

@manytomany

(fetch = fetchtype.lazy,cascade = cascadetype.remove)

@jointable

(name=

"t_user_role"

, joincolumns=

, inversejoincolumns =

)private set

users =

newhashset

<

>()

;

user方

@manytomany

(fetch = fetchtype.lazy,cascade = cascadetype.remove)

@jointable

(name=

"t_user_role"

, joincolumns=

, inversejoincolumns =

)private set

roles =

newhashset

<

>()

;

@manytomany

(cascade = cascadetype.persist)

public

void

persist2()

throws exception

一對一 可以看成 一對多 或者 多對一的特殊情況

重點配置:

(1)建議使用單向 多 對一 不要使用單向一對多

​(2)如果要使用1對多,盡量使用雙向配置,讓1方放棄管理

(3) 多對多 如果想相互獲取資料 配置雙向,如果單向操作 就配置單向

(4)使用多對一來代替一對一,如果實在使用一對一 使用唯一外來鍵的方式

jpa 表關係對應

這裡使用lombok,簡化 分為兩種關係,是一對一主鍵關聯,一對一外來鍵關聯 一對一主鍵關聯 這裡使用使用者和使用者詳情 entity table name tb user data public class user data entity table name tb detail public ...

JPA的實體關係對映總結

jpa是ejb3.0中引入的實體 關係持久化模型。通常,每個實體類相當於是資料庫中的一張表,而每個物件則是表中的一條記錄。我們知道,資料庫中的表之間會存在一定的依賴,這可以通過 主外來鍵 來體現出來。物件關係對映提供了一種將物件對映到資料庫的機制 orm 其中jpa就是這樣的一種標準。有了orm,我...

jpa中的個種關係

泛型 繼承關係 實現組合 聚合關聯 依賴組合,聚合,關聯 單向一對多,單向多對一,onetomany fetch fetchtype.lazy joincolumn name department id 雙向一對多 多對一 兩邊都要配置,但是我們為了提高效能,我們會在一遍選擇放棄維權 onetoma...