1. 程式人生 > >JPA 一對多例項配置

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