JPA系列七 對映關聯關係 雙向一對一

2021-09-20 15:23:55 字數 1843 閱讀 3410

1、建立實體類department

@table(name="jpa_departments")

@entity

public class department

public void setid(integer id)

@column(name="dept_name")

public string getdeptname()

public void setdeptname(string deptname)

//使用 @onetoone 來對映一對一關聯關係。

//若需要在當前資料表中新增主鍵則需要使用 @joincolumn 來進行對映. 注意, 一對一關聯關係, 所以需要新增 unique=true

@joincolumn(name="mgr_id", unique=true)

@onetoone(fetch=fetchtype.lazy)

public manager getmgr()

public void setmgr(manager mgr)

}

2、建立實體類manager

@table(name="jpa_managers")

@entity

public class manager

public void setid(integer id)

@column(name="mgr_name")

public string getmgrname()

public void setmgrname(string mgrname)

public department getdept()

public void setdept(department dept)

}

3、在persistence.xml中配置

com.atguigu.jpa.helloworld.department

com.atguigu.jpa.helloworld.manager

4、測試:

//雙向一對一的關聯關係, 建議先儲存不維護關聯關係的一方, 即沒有外來鍵的一方, 這樣不會多出 update 語句.

//預設情況下, 若獲取維護關聯關係的一方, 則會通過左外連線獲取其關聯的物件. 

//但可以通過 @onttoone 的 fetch 屬性來修改載入策略.

//預設情況下, 若獲取不維護關聯關係的一方, 則也會通過左外連線獲取其關聯的物件. 

//可以通過 @onetoone 的 fetch 屬性來修改載入策略. 但依然會再傳送 sql 語句來初始化其關聯的物件

//這說明在不維護關聯關係的一方, 不建議修改 fetch 屬性.

JPA 對映雙向多對多關聯關係

不維護關聯關係的一端 entity table name item public class item public void setid integer id public string getitemname public void setitemname string itemname pub...

JPA對映雙向一對多的關聯關係

一的一方 123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 4849 5051 5253 5455 5657 5859 6061 6263...

JPA對映雙向一對多的關聯關係

一的一方 123 4567 891011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 4849 5051 5253 5455 5657 5859 6061 6263...