自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Hibernate一對(duì)一 主鍵關(guān)聯(lián)映射

開發(fā) 后端
本文將介紹兩個(gè)對(duì)象之間是一對(duì)一的關(guān)系,如Person-IdCard(人-身份證號(hào))和兩種策略可以實(shí)現(xiàn)一對(duì)一的關(guān)聯(lián)映射。

*兩個(gè)對(duì)象之間是一對(duì)一的關(guān)系,如Person-IdCard(人-身份證號(hào))

*有兩種策略可以實(shí)現(xiàn)一對(duì)一的關(guān)聯(lián)映射

》主鍵關(guān)聯(lián):即讓兩個(gè)對(duì)象具有相同的主鍵值,以表明它們之間的一一對(duì)應(yīng)關(guān)系;數(shù)據(jù)庫不會(huì)有額外的字段來維護(hù)它們之間的關(guān)系,僅通過表的主鍵來關(guān)聯(lián)

》唯一外鍵關(guān)聯(lián):外鍵關(guān)聯(lián)本來是用于多對(duì)一的配置,但是如果加上唯一的限制之后,也可以用來表示一對(duì)一關(guān)聯(lián)映射

1.主鍵關(guān)聯(lián)映射(單向)

實(shí)例場景:人-->身份證號(hào)(Person-->IdCard),從IdCard看不到Person對(duì)象

對(duì)象模型:

IdCard實(shí)體類:

  1. public class IdCard {  
  2.     private int id;   
  3.     private String cardNo;  
  4.  
  5.     public int getId() {  
  6.         return id;  
  7.     }  
  8.     public void setId(int id) {  
  9.         this.id = id;  
  10.     }  
  11.     public String getCardNo() {  
  12.         return cardNo;  
  13.     }  
  14.     public void setCardNo(String cardNo) {  
  15.         this.cardNo = cardNo;  
  16.     }  
  17. }  

Person實(shí)體類:

  1. public class Person {  
  2.     private int id;   
  3.     private String name;      
  4.     private IdCard idCard;//持有IdCard對(duì)象的引用  
  5.     public int getId() {  
  6.         return id;  
  7.     }  
  8.     public void setId(int id) {  
  9.         this.id = id;  
  10.     }  
  11.     public String getName() {  
  12.         return name;  
  13.     }  
  14.     public void setName(String name) {  
  15.         this.name = name;  
  16.     }  
  17.     public IdCard getIdCard() {  
  18.         return idCard;  
  19.     }  
  20.     public void setIdCard(IdCard idCard) {  
  21.         this.idCard = idCard;  
  22.     }  
  23. }  

IdCard實(shí)體映射文件:

  1. <hibernate-mapping>  
  2.     <class name="com.cn.hibernate.IdCard" table="t_idcard">  
  3.         <id name="id" column="id">  
  4.             <generator class="native"/>  
  5.         </id>  
  6.         <property name="cardNo"/>  
  7.     </class>  
  8. </hibernate-mapping>  

Person實(shí)體映射文件:

  1. <hibernate-mapping>  
  2.     <class name="com.cn.hibernate.Person" table="t_person">  
  3.         <id name="id" column="id">  
  4.             <!--  
  5.                 因?yàn)橹麈I不是自己生成的,而是作為一個(gè)外鍵(來源于其它值),所以使用foreign生成策略  
  6.                 foreign:使用另外一個(gè)相關(guān)聯(lián)的對(duì)象的標(biāo)識(shí)符,通常和<one-to-one>聯(lián)合起來使用。  
  7.                 再使用元素<param>的屬性值指定相關(guān)聯(lián)對(duì)象(這里Person相關(guān)聯(lián)的對(duì)象為idCard,則標(biāo)識(shí)符為idCard的id)為了能夠在加載person數(shù)據(jù)同時(shí)加載IdCard數(shù)據(jù),所以需要使用一個(gè)標(biāo)簽<one-to-one>來設(shè)置這個(gè)功能。  
  8.              -->  
  9.             <generator class="foreign">  
  10.                 <!-- 元素<param>屬性name的值是固定為property -->  
  11.                 <param name="property">idCard</param>  
  12.             </generator>  
  13.         </id>  
  14.         <property name="name"/>  
  15.         <!-- <one-to-one>標(biāo)簽  
  16.         表示如何加載它的引用對(duì)象(這里引用對(duì)象就指idCard這里的name值是idCard),同時(shí)也說是一對(duì)一的關(guān)系。  
  17.         默認(rèn)方式是根據(jù)主鍵加載(把person中的主鍵取出再到IdCard中來取相關(guān)IdCard數(shù)據(jù)。)  
  18.  我們也說過此主鍵也作為一個(gè)外鍵引用 了IdCard,所以需要加一個(gè)數(shù)據(jù)庫限制(外鍵約束)constrained="true" 
  19.          -->  
  20.         <one-to-one name="idCard" constrained="true"/>    
  21. </class>  
  22. </hibernate-mapping> 

原文鏈接:http://blog.csdn.net/fengxuezhiye/article/details/7374584

【編輯推薦】

  1. Hibernate的基本標(biāo)簽和映射
  2. Java集合框架總結(jié):Set接口的使用
  3. Java的位移運(yùn)算巧方法
  4. Java7的一個(gè)新類JLayer:裝飾的Swing組件
  5. 關(guān)于Java中內(nèi)存溢出的解決辦法
責(zé)任編輯:林師授 來源: fengxuezhiye的博客
相關(guān)推薦

2012-02-08 13:34:08

HibernateJava

2009-06-03 16:27:27

Hibernate一對(duì)一關(guān)系

2009-06-03 16:18:16

Hibernate關(guān)系代碼實(shí)例

2009-06-04 16:14:22

Hibernate一對(duì)Hibernate一對(duì)Hibernate多對(duì)

2009-08-17 10:34:51

NHibernate一

2009-09-23 10:37:50

Hibernate一對(duì)

2009-09-23 10:57:02

Hibernate一對(duì)

2009-09-22 09:55:58

Hibernate實(shí)例

2009-06-24 15:49:54

Entity Bean一對(duì)一映射

2009-07-21 17:31:39

iBATIS一對(duì)多映射

2009-06-26 10:15:54

面試HR

2009-06-04 10:34:19

Hibernate一對(duì)一對(duì)多關(guān)系配置

2009-12-23 09:31:11

寬帶路由上網(wǎng)故障

2012-02-03 10:07:04

HibernateJava

2010-04-15 09:09:02

Hibernate

2012-03-13 16:29:54

Between情侶移動(dòng)應(yīng)用

2013-10-12 16:41:01

微軟微軟CEO鮑爾默

2009-09-25 12:59:52

Hibernate映射

2009-10-22 18:24:35

數(shù)字化教學(xué)教育

2012-12-14 09:54:31

英特爾數(shù)字化學(xué)習(xí)年會(huì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)