日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
精通Hibernate:映射對象標識符

Java語言按內存地址來識別和區(qū)分同一個類的不同對象,而關系數(shù)據庫按主鍵值來識別和區(qū)分同一個表中的不同記錄。Hibernate使用對象標識符(OID)來建立內存中的對象和數(shù)據庫中記錄的對應關系,對象的OID和數(shù)據庫表的主鍵對應。

臺江ssl適用于網站、小程序/APP、API接口等需要進行數(shù)據傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

自然主鍵(具有業(yè)務含義的字段),如用戶自定義的NAME;而代理主鍵不具備業(yè)務含義的字段,該字段一般取名為“ID”。

在java語言中,“==”判斷的是引用,“equals”判斷的是值。因此,

一、代理主鍵的映射

為了保證持久化對象的OID的唯一性和不變性,通常有Hibernate或底層數(shù)據庫來給OID復制。因此,可以把持久化類的OID的setId()方法設置為Private類型以禁止Java應用程序隨便修改OID;而把getId()方法設為public類型,使得Java應用程序都可以讀取持久化對象。

在對象關系映射文件中,元素用來設置對象標識符,例如:

 
 
 
 
  1.  
  2.        
  3.  

二、自然主鍵的映射

自然主鍵是具有業(yè)務含義的主鍵。應盡量避免使用自然主鍵。

映射單個自然主鍵name

 
 
 
 
  1.  
  2.  
  3.  

在以上代碼中,標識符生成策略為“assigned”,表示有應用程序為name屬性賦值。

可以使用

 
 
 
 
  1. Customer customer=new Customer();  
  2. session.getIdentifier(customer); 

來返回Customer的OID,以上返回的是Customer對象的name屬性。

映射復合自然主鍵:

 
 
 
 
  1.  
  2.     
  3.     
  4.  
 
 
 
 
  1. Customer customer=new Customer();  
  2. customer.setName("Tom");  
  3. customer.setCompanyId(new Long(11));  
  4. session.saveORupadate(customer);//保存和更新指定記錄  
  5. session.get(Customer.class,customer);//獲取NAME字段為Tom并且COMPANY_ID字段為11的記錄 

映射復合自然主鍵的另一種方式為先定義單獨的主鍵類。如下:

 
 
 
 
  1. package mypack;  
  2. public class CustomerId  implements java.io.Serializable {  
  3.      private String name;  
  4.      private Company company;  
  5.  
  6.     public CustomerId() {  
  7.     }  
  8.  
  9.     public CustomerId(String name, Company company) {  
  10.        this.name = name;  
  11.        this.company = company;  
  12.     }  
  13.      
  14.     public String getName() {  
  15.         return this.name;  
  16.     }  
  17.       
  18.     public void setName(String name) {  
  19.         this.name = name;  
  20.     }  
  21.     public Company getCompany() {  
  22.         return this.company;  
  23.     }  
  24.       
  25.     public void setCompany(Company company) {  
  26.         this.company = company;  
  27.     }  

在Customer類中不必定義name和companyId屬性,而是定義customerId屬性。

映射代碼如下:

 
 
 
 
  1.  
  2.         
  3.         

三、自然主鍵(存在外鍵)的映射

假設上例中COMPANY_ID還作為外鍵參照COMPANYS表,那么Customer類中除了定義customerId屬性,還必須定義company屬性:

 
 
 
 
  1. private CustomerId customerId;  
  2. private Company company; 

映射company屬性的代碼:

 
 
 
 
  1.  
  2.         
  3.          
  4.  
  5.  

以上元素的insert和update屬性都是false,表明當Hibernate保存或者更新Customer對象時,會忽略company屬性。

也可以用元素來映射company屬性:

 
 
 
 
  1.  
  2.       
  3.       
  4.    

網頁名稱:精通Hibernate:映射對象標識符
網站網址:http://www.5511xx.com/article/dhpojhi.html