JPA 一對多例項配置
xml程式碼
在JPA中雙向一對多關係則多方為關係護端即負責外來鍵記錄的更新,一方為被維護端即沒有權力更新外來鍵記錄
src下在面的META-INF/persistence.xml配置如下:
訂單和訂單項兩個例項實體Bean如下:
訂單表:
訂單項表:
測試:
1、hibernate是雙向的,通過one可以找到many,通過many可以找到one,
要想找到對方,必須將對方作為當前物件屬性,在one這邊
應當有一個Set屬性裝載多many物件,在many這邊應當有一個
屬性裝載一個One物件。
public class customer
{
private Set buies;
private String customerName;
public void setBuies(Set buies)
{
this.buies=buies;
}
public Set getBuies()
{
return this.buies;
}
}
public class Buy
{
private Integer buyID;
private Customer customer;
public void setCustomer(Customer customer)
{
this.customer=customer;
}
public Customer getCustomer()
{
return this.customer;
}
}
2、主控方:維護外來鍵列的值。
1、inverse="false"代表是主控方,另一方便是被控方,
反之inverse="true"代表是被控方,另一方便是主控方。
要想維護外來鍵的值,必須將被控方作為主控方的屬性。
一般主控方要many這邊,不在one那邊。
3、延遲載入:
1、lazy="true"代表是延遲載入,載入時只加載當前物件的,
不載入其關聯物件的值,只有取關聯物件的值時才執行sql
載入對方。
2、lazy="false"代表即時載入,載入時不但載入當前物件的,
還載入其關聯的所有物件資訊。
4、級聯處理:主增從增、主刪從刪、從改從改,要做到該功能,必須將
從作為主的一個屬性或主集合屬性中的一個元素。
1、cascade="all" 代表級聯insert、update、delete操作
2、cascade="save-update" 代表級聯insert、update操作
主鍵的生成方式:
1、必須手動給定主鍵值
assigned
2、使用者及hibernate都不管由資料庫生,如identity
native
1、html:select標籤
2、過濾器
1、filter
2、RequestProcessor