一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Hibernate多對一單項關聯

Hibernate多對一單項關聯

2020-12-31 13:59動力節點 Java教程

這篇文章主要介紹了Hibernate多對一單項關聯,需要的朋友可以參考下

概念

       基本映射是對一個實體進行映射,關聯映射就是處理多個實體之間的關系,將關聯關系映射到數據庫中,所謂的關聯關系在對象模型中有一個或多個引用。

分類

Hibernate多對一單項關聯

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

映射技巧 

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

(1)寫注釋

        解釋:在寫映射文件之前先寫注釋,將問號的地方填上相應的內容。例如:<!-- group屬性,表達的是本對象(user)與group的多對一的關系--> 

(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屬性:關聯的實體類型(注釋中的第2個問號)

          • column屬性:

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

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

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

               ○ 多對多中的<many-to-many column=“..”>:一般可以寫為關聯對象的名稱加id后綴。 

(4)完成

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

          我們后面所有關聯映射的博文都使用此映射技巧來寫映射文件,明白之后,速度會非常快。

多對一關聯映射

映射原理 

       多的一端維護關聯關系,在“多”的一端加入一個外鍵,指向“一”的一端。多的一端持有一的一端的引用,即在“多”的一端加外鍵,指向“一”的一端。 

實例

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

Hibernate多對一單項關聯

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

Hibernate多對一單項關聯

作用:

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

      上面都是多對一關聯映射的基本原理,以及相應的實例,下面我們看一下代碼:

 代碼

user類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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屬性,表達的是本對象與group的多對一的關系-->
 <many-to-one name="group" class="group" column="groupid"></many-to-one>
 <!-- 解釋:
  多對一關系標簽:
  <many-to-one name=“” class=“” column=“”/>
  
  1、第1個問號:group是user類的屬性,對應于name屬性名
  2、第2個問號:class表達的是本對象(user)與group的關系
  3、第3個問號:column是屬性名+id
  當我們寫完注釋之后,我們直接拷貝問號的對應關系即可。
  -->
 </class>
</hibernate-mapping>

 group.hbm.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
<?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>

生成的表結構,與上面的分析的關系模型一樣: 

Hibernate多對一單項關聯

     項目中,多對一關聯映射是最常見的映射,但它是hibernate的關聯映射中最簡單的一種映射關系

總結

以上所述是小編給大家介紹的hibernate多對一單項關聯,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://blog.sina.com.cn/s/blog_9c6852670102wvih.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美女的让男人桶爽30分钟的 | 欧美成人精品第一区二区三区 | 国内精品免费一区二区三区 | 亚洲人成网站在线观看90影院 | 亚洲 欧美 日韩 国产 视频 | 暖暖影院日本版 | 贰佰麻豆剧果冻传媒一二三区 | 丰腴尤物贵妇浪荡小说 | 四虎精品免费视频 | 欧美式禁忌 | 亚洲欧美韩国日产综合在线 | 羲义嫁密着中出交尾gvg794 | 免费观看小视频 | 处女私拍 | 亚洲欧美专区精品伊人久久 | 久久re这里精品23 | 我和黑色丝袜班主任 | 午夜伦伦电影理论片费看 | 午夜久久久久久网站 | 亚洲欧美在线免费观看 | 亚洲色图欧美偷拍 | 亚洲一卡2卡4卡5卡6卡残暴在线 | 欧美草比视频 | 极品丝袜小说全集 | 波多野结衣女教师在线观看 | 小舞丝袜调教喷水沦为肉奴 | 色视频国产 | 久久免费国产视频 | 岛国免费大片 | 涩涩五月天 | 免费 视频| 俺去俺去啦最新官网在线 | zoo性欧美| 娇女的呻吟亲女禁忌h16 | 免费永久观看美女视频网站网址 | 羞羞麻豆国产精品1区2区3区 | 超时空要爱国语完整版在线 | 国产99视频精品免费视频7 | 日本红怡院亚洲红怡院最新 | 性柔术18性13处交 | 欧美精品综合一区二区三区 |