最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Hibernate多對(duì)一單項(xiàng)關(guān)聯(lián)

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

概念

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

分類

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

映射技巧 

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

(1)寫注釋

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

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

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

(3)填空

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

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

          • class屬性:關(guān)聯(lián)的實(shí)體類型(注釋中的第2個(gè)問號(hào))

          • column屬性:

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

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

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

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

(4)完成

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

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

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

映射原理 

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

實(shí)例

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

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

作用:

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

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

 代碼

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á)的是本對(duì)象與Group的多對(duì)一的關(guān)系--> 
 <many-to-one name="group" class="Group" column="groupid"></many-to-one> 
 <!-- 解釋: 
  多對(duì)一關(guān)系標(biāo)簽: 
  <many-to-one name=“” class=“” column=“”/> 
  
  1、第1個(gè)問號(hào):group是User類的屬性,對(duì)應(yīng)于name屬性名 
  2、第2個(gè)問號(hào):class表達(dá)的是本對(duì)象(User)與Group的關(guān)系 
  3、第3個(gè)問號(hào):column是屬性名+Id 
  當(dāng)我們寫完注釋之后,我們直接拷貝問號(hào)的對(duì)應(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)系模型一樣: 

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

總結(jié)

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

相關(guān)文章

  • java開發(fā)微信分享接口的步驟

    java開發(fā)微信分享接口的步驟

    這篇文章主要為大家詳細(xì)介紹了java開發(fā)微信分享接口的步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Spring常見的事務(wù)失效場(chǎng)景及解決方案

    Spring常見的事務(wù)失效場(chǎng)景及解決方案

    Spring 事務(wù)管理是企業(yè)級(jí)應(yīng)用開發(fā)中不可或缺的一部分,它可以幫助我們確保數(shù)據(jù)的一致性和完整性,然而,在實(shí)際開發(fā)中,由于各種原因,事務(wù)可能會(huì)失效,本文將詳細(xì)介紹 Spring 事務(wù)失效的常見情況,并提供相應(yīng)的解決方案和示例代碼,需要的朋友可以參考下
    2024-11-11
  • JAVA中時(shí)間戳與LocalDateTime互相轉(zhuǎn)換代碼例子

    JAVA中時(shí)間戳與LocalDateTime互相轉(zhuǎn)換代碼例子

    最近在編碼過程中遇到將時(shí)間戳轉(zhuǎn)化為 LocalDateTime,所以這里給總結(jié)下,這篇文章主要給大家介紹了關(guān)于JAVA中時(shí)間戳與LocalDateTime互相轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • Spring實(shí)現(xiàn)三級(jí)緩存機(jī)制

    Spring實(shí)現(xiàn)三級(jí)緩存機(jī)制

    三級(jí)緩存機(jī)制是Spring解決循環(huán)依賴問題的關(guān)鍵,本文主要介紹了Spring實(shí)現(xiàn)三級(jí)緩存機(jī)制,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼

    Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼

    這篇文章主要介紹了Xml中使用foreach遍歷對(duì)象實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • java利用注解實(shí)現(xiàn)簡(jiǎn)單的excel數(shù)據(jù)讀取

    java利用注解實(shí)現(xiàn)簡(jiǎn)單的excel數(shù)據(jù)讀取

    這篇文章主要為大家詳細(xì)介紹了java利用注解實(shí)現(xiàn)簡(jiǎn)單的excel數(shù)據(jù)讀取,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringMVC 方法四種類型返回值總結(jié)(你用過幾種)

    SpringMVC 方法四種類型返回值總結(jié)(你用過幾種)

    這篇文章主要介紹了SpringMVC 方法四種類型返回值總結(jié)(你用過幾種),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • Spring AOP快速入門及開發(fā)步驟

    Spring AOP快速入門及開發(fā)步驟

    Spring AOP(面向切面編程)核心概念包括切面(Aspect)、連接點(diǎn)(JoinPoint)、切點(diǎn)(Pointcut)、通知(Advice)等,通過在不改變?cè)a的情況下,對(duì)方法進(jìn)行增強(qiáng),實(shí)現(xiàn)了代碼的解耦和功能擴(kuò)展,本文帶來大家掌握Spring 中 AOP 的開發(fā)步驟,感興趣的朋友一起看看吧
    2024-10-10
  • SpringBoot整合freemarker的講解

    SpringBoot整合freemarker的講解

    今天小編就為大家分享一篇關(guān)于SpringBoot整合freemarker的講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • SpringBoot自動(dòng)裝配Condition的實(shí)現(xiàn)方式

    SpringBoot自動(dòng)裝配Condition的實(shí)現(xiàn)方式

    這篇文章主要介紹了SpringBoot自動(dòng)裝配Condition的實(shí)現(xiàn)方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

迁安市| 河西区| 体育| 高邑县| 浦北县| 遂宁市| 武乡县| 海伦市| 大名县| 基隆市| 五家渠市| 房产| 武功县| 云林县| 杂多县| 崇信县| 昌黎县| 龙里县| 光山县| 比如县| 秦皇岛市| 乌什县| 盐边县| 鄂托克前旗| 临颍县| 黄梅县| 望奎县| 宁陕县| 乐清市| 温宿县| 伊宁县| 仁寿县| 巴里| 垣曲县| 兴义市| 柳江县| 深泽县| 讷河市| 奎屯市| 漳平市| 肥西县|