青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數(shù)據(jù)加載中……

hibernate多表關聯(lián)總結

1>:one-to-one(一對一關聯(lián))主鍵關聯(lián):

一對一關聯(lián)一般可分為主鍵關聯(lián)和外鍵關聯(lián)

主鍵關聯(lián)的意思是說關聯(lián)的兩個實體共享一個主鍵值,但這個主鍵可以由兩個表產(chǎn)生.

現(xiàn)在的問題是:

*如何讓另一個表引用已經(jīng)生成的主鍵值

解決辦法:

*Hibernate映射文件中使用主鍵的foreign生成機制

eg:學生表:

<hibernate-mapping>

 <class table="user" catalog="study">

 <id type="java.lang.Integer">

 <column />

 <generator />

 </id>

 <property type="java.lang.String">

 <column length="20" />

</property>

<one-to-one cascade="all"></one-to-one>

</class>

</hibernate-mapping>

添加:<one-to-one

 

fetch="join"

cascade="all" />

<class>元素的lazy屬性為true,表示延遲加載,如果lazy設為false,則表示立即加載.以下對這二點進行說明.

立即加載:表示在從數(shù)據(jù)庫中取得數(shù)據(jù)組裝好一個對象后,會立即再從數(shù)據(jù)庫取得數(shù)據(jù)組裝此對象所關聯(lián)的對象

延遲加載:表示在從數(shù)據(jù)庫中取得數(shù)據(jù)組裝好一個對象后,不會立即從數(shù)據(jù)庫中取得數(shù)據(jù)組裝此對象所關聯(lián)的對象,

而是等到需要時,才會從數(shù)據(jù)庫取得數(shù)據(jù)組裝此關聯(lián)對象.

<one-to-one>元素的fetch屬性可選為selectjoin

join:連接抓取,Hibernate通過在Select語句中使用outer join(外連接)來獲得對象的關聯(lián)實例或者關聯(lián)集合.

select:查詢抓取,Hibernate需要另外發(fā)送一條select語句抓取當前對象的關聯(lián)實體或集合.

******所以我們一般用連接抓取<join>

證件表:

<hibernate-mapping>

<class table="card" lazy="true" catalog="study">

<id type="java.lang.Integer">

<column />

<generator >

<param >user</param>

</generator>

</id>

<!-- id使用外鍵(foreign)生成機制,引用代號為user的對象

的主鍵作為card表的主鍵和外鍵。同時user在下面的

<one-to-one>中進行了定義 -->

<property type="java.lang.Integer">

<column />

</property>

<one-to-one constrained="true"></one-to-one>

<!-- constrained="true"表示card引用了student的主鍵作為外鍵。 -->

</class>

</hibernate-mapping>

一對一映射必須加載的元素有:

name

class

constrained(主鍵關聯(lián))

fetch(關聯(lián)的一方才有:意思是說需要通過這一方查詢另一方數(shù)據(jù)的一方.比如學生表查詢證件中的數(shù)據(jù),學生就是關聯(lián)的一方)

cascade(關聯(lián)的一方才有:意思是說需要通過這一方保存或者更新數(shù)據(jù)對另一方也產(chǎn)生影響(另一方也保存或者更新了,比如保存學生信息,那么與學生相關聯(lián)的證件信息也保存了))

 

2><one-to-one>外鍵關聯(lián):

開發(fā)中可以參照<one-to-one>主鍵關聯(lián)和<many-to-one>

這里,學生表保存不變,只改變證件表:

<hibernate-mapping>

<class table="card" lazy="true">

<id type="java.lang.Integer">

<column />

<generator /><!-- 不再是foreign,因為它的主鍵不是學生表的主鍵,它的主鍵是自動產(chǎn)生的,它的外鍵才是學生表的主鍵 -->

</id>

<property type="java.lang.String">

<column length="20" />

</property>

<many-to-one column="userid" unique="true"/>

<!-- 惟一的多對一,如果被限制為唯一,實際上變成一對一關系了 -->

<!-- unique設為true表示使用DDL為外鍵字段生成一個惟一約束。

以外鍵關聯(lián)對象的一對一關系,其本質(zhì)上已經(jīng)變成了一對多的雙向關聯(lián),

應直接按照一對多和多對一的要求編寫它們的映射文件。當unique

true時實際上變成了一對一的關系。

***這里需要強調(diào)一點的是<many-to-one>元素必須有column這一項,它表示這個這個表的外鍵是什么.注意,這里是表的外鍵,不是類的外鍵-->

</class>

</hibernate-mapping>

 

3>:<one-to-many>單身關聯(lián)

一對多關聯(lián)分為單向一對多關聯(lián)和雙向一雙多關聯(lián)

單向的一對多關聯(lián)只需要在一方進行映射配置

單身一對多關聯(lián):

<hibernate-mapping>

<class table="customers" catalog="study">

<id type="java.lang.Long">

<column />

<generator />

</id>

<property type="java.lang.String">

<column length="20" />

</property>

<set table="orders" cascade="save-update" inverse="true">

<key column="customers_ID"></key>

<one-to-many />

</set>

</class>

</hibernate-mapping>

這里需要強調(diào)的是<set>元素的屬性代表的意義:

name

table

lazy:當為true時為延遲加載,false時為立即加載

inverse:用于表示雙向關聯(lián)中的被動一端,inverse的值為false的一方負責維護關聯(lián)關系

cascade

sort:排序關系,unsorted(不排序),natural(自然排序),comparatorClass(由某個實現(xiàn)了java.util.comparator接口的類型  指定排序算法。);

******<key>子元素的column屬性指定關聯(lián)表(orders)的外鍵(customers_ID)

4>:<one-to-many>雙向關聯(lián):

如果要設置一對多雙向關聯(lián)關系.那么還需要在""的映射文件中使用<many-to-one>

<many-to-one

 

column="customers_ID"

cascade="none"

outer-join="auto"

insert="false" insertupdate設定是否對column屬性指定的關聯(lián)字段進行insertupdate操作

update="false">

</many-to-one>

 

 

4>多對多關聯(lián):

多對多關聯(lián)時要建一個連接表查詢

學生的映射文件

<hibernate-mapping>

<class table="students" catalog="study">

<id type="java.lang.Long">

<column />

<generator />

</id>

<property type="java.lang.String">

<column length="20" />

</property>

<set table="student_teacher_table" cascade="save-update" inverse="false">

<key column="stuID"></key>

<many-to-many column="teaID"></many-to-many>

</set>

***<key>元素的理解:

它的控制主要是通過stuID(外鍵)來完成,就是我們從student_teacher_table表中我們只要

select * from student_teacher_table where stuID='該學生的ID',這樣我們就可以得到它的教師的ID

***<many-to-many>的理解:

我們從student_teacher_table表中根據(jù)stuID拿到了與該stuID關聯(lián)的teaID,

然后select * from teacher where teaID='前一步拿到的teaID'

</class>

</hibernate-mapping>

 

教師的映射文件

<hibernate-mapping>

<class table="teachers" catalog="study">

<id type="java.lang.Long">

<column />

<generator />

</id>

<property type="java.lang.String">

<column length="20" />

</property>

<set table="student_teacher_table" inverse="true">

<key column="teaID"></key>

<many-to-many column="stuID"></many-to-many>

</set>

</class>

</hibernate-mapping>

 

posted on 2009-08-05 13:24 肥仔 閱讀(1285) 評論(0)  編輯 收藏 引用 所屬分類: Web-后臺

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩亚洲欧美成人一区| 国产欧美日韩精品一区| 亚洲人久久久| 美国十次成人| 米奇777在线欧美播放| 欧美成人蜜桃| 亚洲国产三级网| 一本综合精品| 亚洲一区欧美| 久久精品123| 欧美~级网站不卡| 欧美老女人xx| 国产精品日韩二区| **性色生活片久久毛片| 9色精品在线| 久久av在线| 欧美国产日韩一区二区在线观看| 亚洲全黄一级网站| 性欧美xxxx视频在线观看| 久久亚洲国产精品日日av夜夜| 欧美久久电影| 精品1区2区| 亚洲宅男天堂在线观看无病毒| 久久国产精品99久久久久久老狼| 免费不卡中文字幕视频| 亚洲精品欧美| 久久久久久尹人网香蕉| 国产精品magnet| 亚洲激情成人网| 亚洲欧美日韩在线高清直播| 久久精品国产99国产精品澳门| 国产美女精品视频免费观看| 一区免费视频| 中文av字幕一区| 久久久久欧美| 一区二区电影免费在线观看| 欧美制服丝袜| 欧美日韩极品在线观看一区| 国语自产精品视频在线看抢先版结局| 亚洲欧洲在线视频| 久久激情五月婷婷| 一本一本a久久| 久久久综合网站| 欧美成人黄色小视频| 亚洲神马久久| 欧美另类极品videosbest最新版本 | 久久国产精品电影| 欧美日本在线视频| 尤物99国产成人精品视频| 午夜精品999| av成人老司机| 欧美日本高清| 日韩午夜三级在线| 亚洲福利久久| 久久免费视频网| 永久555www成人免费| 久久精品国产免费观看| 午夜精品在线| 国产色综合久久| 久久久999国产| 亚洲欧美日韩人成在线播放| 欧美中日韩免费视频| 欧美激情一区二区三区蜜桃视频 | 99国内精品久久| 欧美肥婆bbw| 亚洲国产成人在线| 欧美大片免费观看在线观看网站推荐| 久久精品在线观看| 极品少妇一区二区| 欧美大尺度在线观看| 欧美大片免费观看在线观看网站推荐| 亚洲高清视频的网址| 亚洲国产美女久久久久| 欧美黑人在线播放| 99视频一区二区三区| 久久久久欧美精品| 欧美一区免费| 亚洲视频狠狠| 国产日韩欧美电影在线观看| 性欧美1819性猛交| 亚洲欧美国产制服动漫| 国模一区二区三区| 欧美国产三级| 欧美视频一区二区三区| 欧美一区二区三区免费观看视频| 欧美影院在线播放| 日韩午夜激情av| 亚洲综合三区| 亚洲成色www久久网站| 亚洲人成亚洲人成在线观看| 国产精品久久久久高潮| 久久久久国产精品一区三寸| 欧美高清视频在线 | 国产精品久久久免费| 一区二区三区国产| 亚洲永久免费观看| 尤妮丝一区二区裸体视频| 亚洲人成在线观看| 国产精品欧美日韩| 麻豆国产精品一区二区三区 | 亚洲一区免费在线观看| 午夜在线观看免费一区| 日韩午夜在线观看视频| 欧美一区二区日韩| 亚洲一区二区3| 美女视频黄a大片欧美| 午夜精品福利视频| 欧美风情在线| 亚洲精品一区二区在线观看| 亚洲精品久久7777| 国产一区二区高清| 一区二区三区久久网| 亚洲国产精品一区二区尤物区| 一区二区三区高清在线观看| 一区二区三区在线不卡| 亚洲视频在线观看网站| 亚洲精品国产精品国自产观看| 小处雏高清一区二区三区| 一区二区三区四区五区视频| 久久久噜噜噜久久久| 午夜精品视频一区| 欧美日韩精品系列| 欧美国产丝袜视频| 亚洲国产91| 久久久久国色av免费看影院| 欧美伊人久久大香线蕉综合69| 欧美激情视频网站| 欧美激情自拍| 欧美激情在线观看| 亚洲欧美韩国| 欧美日韩岛国| 91久久精品美女| 韩国一区二区三区在线观看| 亚洲视频免费在线| 亚洲一级片在线看| 欧美婷婷久久| aa级大片欧美| 宅男66日本亚洲欧美视频| 欧美电影在线观看完整版| 欧美r片在线| 亚洲日韩欧美一区二区在线| 老司机午夜精品| 欧美激情亚洲激情| 亚洲美女福利视频网站| 免费黄网站欧美| 亚洲日韩第九十九页| 亚洲影院免费| 国产亚洲欧洲一区高清在线观看 | 欧美激情网友自拍| 亚洲高清不卡av| 亚洲美女精品成人在线视频| 欧美精品日韩精品| 日韩一级精品| 欧美一区2区三区4区公司二百| 国产欧美精品日韩| 久久一区二区三区四区| 亚洲激情啪啪| 亚洲自拍偷拍视频| 国内成人精品视频| 欧美成人伊人久久综合网| 亚洲精品久久久久| 久久激情久久| 日韩午夜中文字幕| 国产欧美精品久久| 欧美激情第9页| 亚洲专区欧美专区| 欧美成人午夜影院| 在线视频精品| 国内精品久久国产| 欧美日韩国内| 久久亚洲二区| 亚洲欧美精品在线| 免费日韩精品中文字幕视频在线| 日韩午夜电影| 国内精品嫩模av私拍在线观看| 欧美**字幕| 午夜精品在线观看| 99精品国产一区二区青青牛奶| 久久综合久久综合这里只有精品| 日韩一级大片在线| 极品av少妇一区二区| 国产精品久久久亚洲一区| 欧美va天堂va视频va在线| 欧美亚洲视频在线观看| 99视频在线精品国自产拍免费观看| 久久久久国产精品午夜一区| 亚洲天堂成人在线视频| 在线成人免费观看| 国产伦精品一区二区三区视频黑人 | 香蕉久久一区二区不卡无毒影院| 在线观看福利一区| 国产精品有限公司| 欧美日韩成人在线观看| 久久久中精品2020中文| 亚洲欧美视频在线观看视频| 亚洲精选在线观看| 欧美国产精品日韩| 久久久久欧美| 久久蜜桃精品| 久久精品99无色码中文字幕|