av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Hibernate關(guān)聯(lián)關(guān)系配置

第一種關(guān)聯(lián)關(guān)系:一對多(多對一)

"一對多"是最普遍的映射關(guān)系,簡單來講就如消費(fèi)者與訂單的關(guān)系。

一對多:從消費(fèi)者角的度來說一個(gè)消費(fèi)者可以有多個(gè)訂單,即為一對多。

多對一:從訂單的角度來說多個(gè)訂單可以對應(yīng)一個(gè)消費(fèi)者,即為多對一。

一對多關(guān)系在hbm文件中的配置信息:

消費(fèi)者(一方):

 
 
 
 
  1.  
  2.  
  3.       
  4.           
  5.               
  6.               
  7.                   
  8.                   
  9.               
  10.               
  11.               
  12.               
  13.               
  14.               
  15.                   
  16.                   
  17.               
  18.           
  19.      

訂單(多方):

 
 
 
 
  1.  
  2.  
  3.      
  4.          
  5.              
  6.                  
  7.                  
  8.              
  9.               
  10.              
  11.              
  12.               
  13.             
  14.                          column="customer_id" cascade="save-update"> 
  15.                       
  16.          
  17.      

"一對多"關(guān)聯(lián)關(guān)系,Customer方對應(yīng)多個(gè)Order方,所以Customer包含一個(gè)集合用于存儲多個(gè)Order,Order包含一個(gè)Customer用于儲存關(guān)聯(lián)自己的Customer。

一對多關(guān)聯(lián)關(guān)系有一種特例:自身一對多關(guān)聯(lián)。例如:

自身一對多關(guān)聯(lián)自身的hbm文件設(shè)置:

 
 
 
 
  1.  
  2.  
  3.       
  4.      
  5.          
  6.              
  7.                  
  8.                  
  9.              
  10.               
  11.              
  12.               
  13.              
  14.                  
  15.                  
  16.              
  17.               
  18.              
  19.              
  20.               
  21.          
  22.      

外鍵存放父親的主鍵。

第二種關(guān)聯(lián)關(guān)系:多對多

多對多關(guān)系也很常見,例如學(xué)生與選修課之間的關(guān)系,一個(gè)學(xué)生可以選擇多門選修課,而每個(gè)選修課又可以被多名學(xué)生選擇。數(shù)據(jù)庫中的多對多關(guān)聯(lián)關(guān)系一般需采用中間表的方式處理,將多對多轉(zhuǎn)化為兩個(gè)一對多。

數(shù)據(jù)表間多對多關(guān)系如下圖:

多對多關(guān)系在hbm文件中的配置信息:

學(xué)生:

 
 
 
 
  1.  
  2.  
  3.  
  4.      
  5.          
  6.              
  7.              
  8.          
  9.  
  10.          
  11.  
  12.          
  13.              
  14.             
  15.                 column="course_id"> 
  16.          
  17.      
  18.  

課程:

 
 
 
 
  1.  
  2.  
  3.  
  4.      
  5.          
  6.              
  7.              
  8.          
  9.  
  10.          
  11.  
  12.          
  13.              
  14.             
  15.                 column="student_id"> 
  16.          
  17.      
  18.  

其實(shí)多對多就是兩個(gè)一對多,它的配置沒什么新奇的相對于一對多。在多對多的關(guān)系設(shè)計(jì)中,一般都會使用一個(gè)中間表將他們拆分成兩個(gè)一對多。標(biāo)簽中的"table"屬性就是用于指定中間表的。中間表一般包含兩個(gè)表的主鍵值,該表用于存儲兩表之間的關(guān)系。由于被拆成了兩個(gè)一對多,中間表是多方,它是使用外鍵關(guān)聯(lián)的,是用于指定外鍵的,用于從中間表取出相應(yīng)的數(shù)據(jù)。中間表每一行數(shù)據(jù)只包含了兩個(gè)關(guān)系表的主鍵,要獲取與自己關(guān)聯(lián)的對象集合,還需要取出由外鍵所獲得的記錄中的另一個(gè)主鍵值,由它到對應(yīng)的表中取出數(shù)據(jù),填充到集合中。中的"column"屬性是用于指定按那一列的值獲取對應(yīng)的數(shù)據(jù)。

例如用course表來說,它與student表使用一個(gè)中間表student_course關(guān)聯(lián)。如果要獲取course記錄對應(yīng)的學(xué)生記錄,首先需要使用外鍵"course_id"從student_course表中取得相應(yīng)的數(shù)據(jù),然后在取得的數(shù)據(jù)中使用"student_id"列的值,在student表中檢索出相關(guān)的student數(shù)據(jù)。其實(shí),為了便于理解,你可以在使用course表的使用就把中間表看成是student表,反之亦然。這樣就可以使用一對多的思維來理解了,多方關(guān)聯(lián)一方需要外鍵那么在本例子中就需要"course_id"來關(guān)。

第三種關(guān)聯(lián)關(guān)系:一對一

一對一關(guān)系就球隊(duì)與球隊(duì)所在地之間的關(guān)系,一支球隊(duì)僅有一個(gè)地址,而一個(gè)地區(qū)也僅有一支球隊(duì)(貌似有點(diǎn)勉強(qiáng),將就下吧)。數(shù)據(jù)表間一對一關(guān)系的表現(xiàn)有兩種,一種是外鍵關(guān)聯(lián),一種是主鍵關(guān)聯(lián)。圖示如下:

一對一外鍵關(guān)聯(lián):

一對一主鍵關(guān)聯(lián):要求兩個(gè)表的主鍵必須完全一致,通過兩個(gè)表的主鍵建立關(guān)聯(lián)關(guān)系:

一對一外鍵關(guān)聯(lián)在hbm文件中的配置信息:

地址:

 
 
 
 
  1.  
  2.  
  3.  
  4.      
  5.          
  6.              
  7.              
  8.          
  9.  
  10.          
  11.           
  12.          
  13.  
  14.      
  15.  

球隊(duì):

 
 
 
 
  1.  
  2.  
  3.  
  4.      
  5.          
  6.              
  7.              
  8.          
  9.  
  10.          
  11.           
  12.          
  13.  
  14.      
  15.  

一對一外鍵關(guān)聯(lián),其實(shí)可以看做是一對多的一種特殊形式,多方退化成一。多方退化成一只需要在標(biāo)簽中設(shè)置"unique"="true"。

一對一主鍵關(guān)聯(lián)在hbm文件中的配置信息:

地址:

 
 
 
 
  1.  
  2.      
  3.          
  4.              
  5.              
  6.          
  7.  
  8.          
  9.           
  10.          
  11.  
  12.      
  13.  

球隊(duì):

 
 
 
 
  1.  
  2.      
  3.          
  4.              
  5.              
  6.                 adress 
  7.              
  8.          
  9.  
  10.          
  11.           
  12.          
  13.  
  14.      
  15.  

一對一主鍵關(guān)聯(lián),是讓兩張的主鍵值一樣。要使兩表的主鍵相同,只能一張表生成主鍵,另一張表參考主鍵。

 
 
 
 
  1.  
  2.   adress 
  3.  

"class"="foreign"就是設(shè)置team表的主鍵參照adress屬性的主鍵值。


本文標(biāo)題:Hibernate關(guān)聯(lián)關(guān)系配置
轉(zhuǎn)載來源:http://uogjgqi.cn/article/cdsojeh.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們在微信上24小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流