欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Hibernate多對一單項關(guān)聯(lián)

 更新時間:2017年09月08日 15:22:19   作者:動力節(jié)點  
這篇文章主要介紹了Hibernate多對一單項關(guān)聯(lián),需要的朋友可以參考下

概念

       基本映射是對一個實體進(jìn)行映射,關(guān)聯(lián)映射就是處理多個實體之間的關(guān)系,將關(guān)聯(lián)關(guān)系映射到數(shù)據(jù)庫中,所謂的關(guān)聯(lián)關(guān)系在對象模型中有一個或多個引用。

分類

        關(guān)聯(lián)關(guān)系分為上述七種,但是由于相互之間有各種關(guān)系,可以簡化,例如:多對一與一對多映射,只是側(cè)重的角度不對而已。 

映射技巧 

       映射技巧是小編寫映射文件的過程,總結(jié)的經(jīng)典內(nèi)容,總共分為四步,咋看不是特別易懂,但是效果很好。下面我們以實例看技巧。

(1)寫注釋

        解釋:在寫映射文件之前先寫注釋,將問號的地方填上相應(yīng)的內(nèi)容。例如:<!-- group屬性,表達(dá)的是本對象(User)與Group的多對一的關(guān)系--> 

(2)寫映射的框架(拷模版)

多對一
<many-to-one name=“” class=“” column=“”/>
一對多
Set
<set name="">
        <key column=""></key>
        <one-to-many class=""/>
</set>
多對多
Set
<set name="" table="">
        <key column=""></key>
        <many-to-many class="" column=""/>
</set>

(3)填空

          填空,就是將映射的框架信息,填寫完成,完成映射文件。

          • name屬性:屬性名(注釋中的第1問號)

          • class屬性:關(guān)聯(lián)的實體類型(注釋中的第2個問號)

          • column屬性:

               ○ <many-to-one column="..">:一般可以寫成屬性名加Id后綴,如屬性為group,則column值寫成groupId。

               ○ 一對多中的<key column="..">:從關(guān)聯(lián)的對方(對方是多對一)映射中把column值拷貝過來。 

               ○ 多對多中的<key column=“..”>:一般可以寫成本對象的名加Id后綴,如本對象名為User,則寫為userId。

               ○ 多對多中的<many-to-many column=“..”>:一般可以寫為關(guān)聯(lián)對象的名稱加Id后綴。 

(4)完成

          將映射文件添加到hibernate.hbm.xml中,這個相信大家都知道為什么。      

          我們后面所有關(guān)聯(lián)映射的博文都使用此映射技巧來寫映射文件,明白之后,速度會非???。

多對一關(guān)聯(lián)映射

映射原理 

       多的一端維護(hù)關(guān)聯(lián)關(guān)系,在“多”的一端加入一個外鍵,指向“一”的一端。多的一端持有一的一端的引用,即在“多”的一端加外鍵,指向“一”的一端。 

實例

       比如,多個用戶屬于同一組,我們從對象模型和關(guān)系模型兩個角度來分析一下這個例子,如下:

      從上圖可以看出,對象模型具有方向性,通過用戶(User)可以看到組(Group),但是不能反過來。用戶和組各對應(yīng)一張數(shù)據(jù)庫表,聚合關(guān)系需要一個外鍵(groupid)來表示,最后生成的表如下所示:

作用:

      當(dāng)我拿到用戶時直接就可以拿到用戶的組,hibernate在訪問多的一端時,可以自動的加載關(guān)聯(lián)對象。對于用戶(User)來說,它的關(guān)聯(lián)對象是組(group)。

      上面都是多對一關(guān)聯(lián)映射的基本原理,以及相應(yīng)的實例,下面我們看一下代碼:

 代碼

User類

public class User { 
 private int id; 
 private String name; 
 private Group group; 
  
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getName() { 
 return name; 
 } 
 public void setName(String name) { 
 this.name = name; 
 } 
 public Group getGroup() { 
 return group; 
 } 
 public void setGroup(Group group) { 
 this.group = group; 
 } 
} 

Group類

public class Group { 
 private int id; 
 private String name; 
 public int getId() { 
 return id; 
 } 
 public void setId(int id) { 
 this.id = id; 
 } 
 public String getName() { 
 return name; 
 } 
 public void setName(String name) { 
 this.name = name; 
 } 

User.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping package="com.liang.hibernate"> 
 <class name="User" table="t_user"> 
 <id name="id"> 
  <generator class="native"></generator> 
 </id> 
 <property name="name"></property> 
 <!-- group屬性,表達(dá)的是本對象與Group的多對一的關(guān)系--> 
 <many-to-one name="group" class="Group" column="groupid"></many-to-one> 
 <!-- 解釋: 
  多對一關(guān)系標(biāo)簽: 
  <many-to-one name=“” class=“” column=“”/> 
  
  1、第1個問號:group是User類的屬性,對應(yīng)于name屬性名 
  2、第2個問號:class表達(dá)的是本對象(User)與Group的關(guān)系 
  3、第3個問號:column是屬性名+Id 
  當(dāng)我們寫完注釋之后,我們直接拷貝問號的對應(yīng)關(guān)系即可。 
  --> 
 </class> 
</hibernate-mapping> 

 Group.hbm.xml

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping> 
 <class name="com.liang.hibernate.Group" table="t_group"> 
 <id name="id"> 
  <generator class="native"></generator> 
 </id> 
 <property name="name"></property> 
 </class> 
</hibernate-mapping> 

生成的表結(jié)構(gòu),與上面的分析的關(guān)系模型一樣: 

     項目中,多對一關(guān)聯(lián)映射是最常見的映射,但它是Hibernate的關(guān)聯(lián)映射中最簡單的一種映射關(guān)系

總結(jié)

以上所述是小編給大家介紹的Hibernate多對一單項關(guān)聯(lián),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Java的string類為什么是不可變的

    Java的string類為什么是不可變的

    這篇文章主要介紹了Java的string類為什么是不可變的,總結(jié)了三個答案,需要的朋友可以參考下
    2014-04-04
  • java中反射和注解的簡單使用方法

    java中反射和注解的簡單使用方法

    相信大家對注解和反射應(yīng)該并不陌生,在現(xiàn)在信息飛速發(fā)展的年代,各種優(yōu)秀的框架或許都離不開注解的使用,這篇文章主要給大家介紹了關(guān)于java中反射和注解的簡單使用方法,需要的朋友可以參考下
    2021-08-08
  • Java集合-HashMap

    Java集合-HashMap

    這篇文章主要介紹了Java集合HashMap,也叫散列表,是一種非常重要的數(shù)據(jù)結(jié)構(gòu),應(yīng)用場景及其豐富,許多緩存技術(shù)(比如memcached)的核心其實就是在內(nèi)存中維護(hù)一張大的哈希表,下面來看看文章的具體內(nèi)容吧,需要的小伙伴也可參考一下
    2022-01-01
  • eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能

    eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能

    這篇文章主要介紹了eclipse連接數(shù)據(jù)庫并實現(xiàn)用戶注冊登錄功能的相關(guān)資料,需要的朋友可以參考下
    2021-01-01
  • Java實現(xiàn)TFIDF算法代碼分享

    Java實現(xiàn)TFIDF算法代碼分享

    這篇文章主要介紹了Java實現(xiàn)TFIDF算法代碼分享,對算法進(jìn)行了簡單介紹,概念,原理,以及實現(xiàn)代碼的分享,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • springboot利用redis、Redisson處理并發(fā)問題的操作

    springboot利用redis、Redisson處理并發(fā)問題的操作

    這篇文章主要介紹了springboot利用redis、Redisson處理并發(fā)問題的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Spring Boot實戰(zhàn)之netty-socketio實現(xiàn)簡單聊天室(給指定用戶推送消息)

    Spring Boot實戰(zhàn)之netty-socketio實現(xiàn)簡單聊天室(給指定用戶推送消息)

    本篇文章主要介紹了Spring Boot實戰(zhàn)之netty-socketio實現(xiàn)簡單聊天室(給指定用戶推送消息),具有一定的參考價值,有興趣的可以了解一下。
    2017-03-03
  • Java多線程文件分片下載實現(xiàn)的示例代碼

    Java多線程文件分片下載實現(xiàn)的示例代碼

    這篇文章主要介紹了Java多線程文件分片下載實現(xiàn)的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Java實現(xiàn)直接插入排序與折半插入排序的示例詳解

    Java實現(xiàn)直接插入排序與折半插入排序的示例詳解

    這篇文章主要為大家詳細(xì)介紹了插入排序中兩個常見的排序:直接插入排序與折半插入排序。本文用Java語言實現(xiàn)了這兩個排序算法,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • 一步步教你JAVA如何優(yōu)化Elastic?Search

    一步步教你JAVA如何優(yōu)化Elastic?Search

    想要榨干Java操作Elasticsearch的所有性能潛力?本指南將一步步教你如何優(yōu)化Java與Elasticsearch的交互!從此,提升ES查詢速度、降低資源消耗不再是難題,趕快一起來探索Java?Elasticsearch優(yōu)化的秘訣吧!
    2024-01-01

最新評論