一、簡介
首先來說關聯關係是物件導向分析,物件導向設計最重要的部分,
jpa是完全可以通過對映來簡化資料持久化到資料,和
hibernate
一樣,jpa
的關聯關係也分為兩種,一種是單向關聯,一種是雙向關聯:
單向關聯:只需要單向訪問關聯端,比如說:我們只能通過某一學期訪問這學期的課程,而不能通過課程訪問課程所屬的學期,這種關聯關係就是單向關聯。
雙向關聯:關聯的兩端可以互相訪問。比說說班級可以訪問學生,學生也可以訪問班級,這種關聯關係就是雙向關聯。
關聯關係可以分為如下幾種:
單向:1-1
;1-n;n-1;n-n
雙向:1-1;
1-n;n-n;
雙向關聯裡沒有
n-1,因為雙向關係中
1-n和
n-1是完全相同的。
二、關聯屬性
不管是單向關聯還是雙向關聯都需要在
n的一端實體中使用
@manytoone
的註解修飾記錄關聯關係的屬性,使用
manytoone
註解常用到的屬性有: 1
、cascade
:指定關聯實體採用怎樣的級聯策略,常用的屬性有四種: (
1)cascadetype.all:
將所有的持久化操作都級聯到關聯實體 (
2)cascadetype.merge
:將merge
操作都級聯到關聯實體 (
3)cascadetype.persist:
將persist
操作都級聯到關聯實體 (
4)cascadetype.refresh:
將refresh
操作都級聯到關聯實體 (
5)cascadetype.remove:
將remove
操作都級聯到關聯實體 2
、fetch
:指定抓取關聯實體時的抓取策略,常用的屬性有如下兩種: (
1)fetchtype.eager:
抓取實體時,立即抓取關聯實體 (
2)fetchtype.lazy:
抓取實體時,演示抓取關聯實體,等到真正呼叫關聯實體時再去抓取 3
、targetentity
:指定關聯實體的類名,對於大多數的關聯關係,
jpa是可以通過反射來確定關聯實體的型別的,因此這個屬性不是必要的,但是也存在一些特殊情況,例如一對多,多對多,如果實體中不帶泛型資訊的
set集合來記錄關聯實體,那麼必須指定
targetentity屬性
對映實體的時候,存在
n的一端,當將實體的屬性持久化到資料庫的時候,需要指定該屬性在資料庫中的各種屬性,此時用到的註解就是
@joincolumn
,其中常用的屬性有: 1
、name
:指定該屬性在外鍵列的列名 2
、nullable
:指定該列是否允許為空,預設是可以為空的 3
、table
:指定該列所在的資料表的表名,預設在多的一端實體所對映成的資料庫表中 4
、unique
:指定該列是否為唯一約束。
剛剛接觸了解的不多,關於
jpa的關聯對映和這次部落格中寫到的屬性在下篇關於單雙向關聯對映的例項中在做詳細的例項。
JPA實體關係對映之注釋
單向一對一 onetomany cascade joincolumn name joincolumn注釋的是儲存表與表關係的字段 雙向一對一 onetoone joincolumn name joincolumn注釋的是儲存表與表關係的字段 雙向一對一 2 onetoone mapedby 單向一對...
JPA 物件關係對映之關聯關係對映策略
關聯關係對映 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多幾種關係。細分起來他們又有單向和雙向之分。王 漢敏,軟體工程師,ibm 2013 年 6 月 17 日 開始您的試用 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多...
對映實體關聯關係
乙個類中有兩個一對一關聯。class a class ba表 idname home id 指向b表中的id,外來鍵 company id 指向b表中的id,外來鍵 b表address street ida對映檔案 cascsde all b對映檔案 只有乙個一對一關聯。class a class ...