1、@OneToOne(一對一,單向關聯)
1)targetEntity屬性標時關聯的實體類,默認為當前標注的實體
2)cascade屬性表示與此實體一對一關聯的實體的聯級樣式類型。聯級樣式上當對實體進行操作時的策略。
? ? 其中,在定義關系時,經常會考慮是否要定義cascade屬性的問題。
? ? 若不定義,則對關系表不會產生影響;
????定義為:CasacdeType.PERSIST,級聯新建;
? ? 定義為:CascadeTypE.REMOVE,級聯刪除;
? ? 定義為:CascadeType.REFRESH,級聯刷新;
? ? 定義為:CascadeType.MERGE,級聯更新;
? ? 定義為:CascadeType.ALL,表示選擇上述四種。
3)fetch屬性表示該實體的加載方式,有LAZY和EAGER兩種方式
? ? 3.1)FetchType.LAZY:懶加載,加載一個實體時,定義懶加載的屬性不會馬上從數據庫中加載
? ? 3.2)FetchType.EAGER:急加載,加載一個實體時,定義急加載的屬性會立即從數據庫中加載
4)optional屬性表示關聯的實體是否能夠存在null值,默認為true,表示可以存在null值。如果為false,則要同時使用@JoinColumn標記。
5)mappedBy屬性用于雙向關聯實體時,標注在不保存關系實體中
2、@JoinColumn(關聯指定列)
JoinCloumn用于注釋表中的字段,與Column不同的是它要保存表與表之間關系的字段。
1)name屬性用來標記表中對應字段名稱,
? ? ? 若果不設置name,則默認name=關聯表名稱+“_”+關聯表主鍵名稱
2)一般情況下,關聯的實體的主鍵用來作外鍵。如果不想使用主鍵作為外鍵,則使用referencedColumnName。
3、OneToMany(一對多,單向)
1)targetEntity屬性表示默認關聯的實體類型,默認為當前標注的實體類
2)其他屬性與@OneToMany相同
4、@JoinTable(表關聯)
1)name屬性為連接兩個表的表名稱,若不指定,則使用默認的表名稱,格式如下:
? ? ? ? "表名1"+"_"+"表名2";
2)joinColumn屬性表示,在保存關系的表中,所保存關聯關系的外鍵的字段,并配合@JoinColumn標記使用
3)inverseJoinColumn屬性與joinColumn類似,它保存的是保存關系的另外一個外鍵字段
4)catalog和schema屬性表示實體指定點目錄名稱或數據庫名稱
5)uniqueConstraints屬性表示該實體所關聯的唯一約束條件,一個實體可以有多個唯一約束條件,默認沒有約束
5、@ManyToMany(多對多)