精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Hibernate的多對一和一對多操作實例

開發 后端
Hibernate的一對多和多對一操作是非常方便的,如果在減少數據庫復雜度的原則來說,把一些邏輯處理放在持久層,還是一個比較常見的方法。

Hibernate的一對多和多對一操作真的很方便,如果系統采用Hibernate作為持久層,完全可以把對應的一對多和多對一邏輯關系放在Hibernate里面控制,減少數據庫的負擔,而且也更清晰。

1、多對一和一對多概念

其實這個概念上來說很簡單,比如一個客戶可以有多個訂單,多個訂單屬于同一個客戶。就是最基本的一對多,和多對一。數據庫使用中,感覺多對一和一對多算是比較常見的邏輯關系了。

我曾經做過一些數據庫,比如某些政府部門的,其表單很設計的很簡單粗糙,甚至連主鍵都沒有,完全靠在事務層補全這些關系。其實通過Hibernate持久層來實現邏輯關系也是很不錯的方法。下面的例子,就是數據庫邏輯上基本沒有定義,主要放在持久層里面。這個也主要是我對數據庫操作屬于半通水的原因。

2、數據庫層

這里面有兩個表單,一個CUSTOMER,客戶表單,一個是ORDERS,訂單表單。生成客戶表單,這個是在SQLServer里面做的,其實其他都一樣,因為邏輯關系在Hibernate上面,id是主鍵非空,其他可以為空:

  1. CREATETABLE[dbo].[CUSTOMER](  
  2. [id][numeric](18,0)NOTNULL,  
  3. [name][varchar](50)NULL,  
  4. [age][int]NULL,  
  5. CONSTRAINT[PK_CUSTOMER]PRIMARYKEY) 

訂單表單

id為主鍵非空,CUSTOMER_id是對應客戶主鍵,也非空,這里不做外鍵設置。

  1. CREATETABLE[dbo].[ORDERS](  
  2. [id][numeric](18,0)NULLPRIMARYKEY,  
  3. [CUSTOMER_id][numeric](18,0)NOTNULL,  
  4. [ORDER_NUMBER][varchar](50)NULL,  
  5. [PRICE][numeric](18,3)NULL  

3、Hibernate設定

HIbernate里面,一對多的對象體現,是客戶有一個集合set,set里面放著對應訂單,而多對一體現,是訂單里面有一個CUSTOMER對象,表明該訂單所屬的客戶。其中,CUSTOMER類為:

  1. publicclassCustomerimplementsjava.io.Serializable{  
  2. privateLongid;  
  3. privateStringname;  
  4. privateIntegerage;  
  5. privateSetrderses=newHashSet();  
  6.  
  7. } 

后面的getXXX和setXXX方法就省去了,同樣訂單類就是:

  1. publicclassOrdersimplementsjava.io.Serializable{  
  2. privateLongid;  
  3. privateCustomercustomer;  
  4. privateStringorderNumber;  
  5. privateDoubleprice;  
  6.  
  7. }  

而對應hbm文檔,就是map文檔如下:

  1. CUSTOMER.hbm.xml  
  2. <!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  4. <!--  
  5. MappingfileautogeneratedbyMyEclipsePersistenceTools  
  6. --> 
  7. <hibernate-mapping> 
  8. <classnameclassname="onetomany.Customer"table="CUSTOMER"schema="dbo"catalog="DBTEST"> 
  9. <idnameidname="id"type="java.lang.Long"> 
  10. <columnnamecolumnname="id"precision="18"scale="0"/> 
  11. <generatorclassgeneratorclass="increment"/> 
  12. </id> 
  13. <propertynamepropertyname="name"type="java.lang.String"> 
  14. <columnnamecolumnname="name"length="50"/> 
  15. </property> 
  16. <propertynamepropertyname="age"type="java.lang.Integer"> 
  17. <columnnamecolumnname="age"/> 
  18. </property> 
  19. <setnamesetname="orderses"inverse="true"lazy="true"cascade="all"> 
  20. <key> 
  21. <columnnamecolumnname="CUSTOMER_id"precision="18"scale="0"not-null="true"/> 
  22. </key> 
  23. <one-to-manyclassone-to-manyclass="onetomany.Orders"/> 
  24. </set> 
  25. </class> 
  26. </hibernate-mapping> 

#p#
這個里面,其他都很簡答了,其中<generatorclass="increment"/>表示主鍵值自動增加,這個主要針對字符串對應的,主要體現多對以的是:

  1. <setnamesetname="orderses"inverse="true"lazy="true"cascade="all"> 
  2. <key> 
  3. <columnnamecolumnname="CUSTOMER_id"precision="18"scale="0"not-null="true"/> 
  4. </key> 
  5. <one-to-manyclassone-to-manyclass="onetomany.Orders"/> 
  6. </set> 

其中,set表示,對應集合;fetch和lazy主要是用來級聯查詢的,而cascade和inverse主要是用來級聯插入和修改的,這幾個主要包括對集合的控制。<one-to-manyclass="onetomany.Orders"/>表示對應類,即set里面包含的類,而key主要是用于確定set里面對應表單列。

  1. ORDERS的hbm  
  2. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  3. <!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN"  
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  5. <!--  
  6. MappingfileautogeneratedbyMyEclipsePersistenceTools  
  7. --> 
  8. <hibernate-mapping> 
  9. <classcatalogclasscatalog="DBTEST"name="onetomany.Orders"schema="dbo"table="ORDERS"> 
  10. <idnameidname="id"type="java.lang.Long"> 
  11. <columnnamecolumnname="id"precision="18"scale="0"/> 
  12. <generatorclassgeneratorclass="increment"/> 
  13. </id> 
  14. <many-to-oneclassmany-to-oneclass="onetomany.Customer"fetch="select"name="customer"> 
  15. <columnnamecolumnname="CUSTOMER_id"precision="18"scale="0"/> 
  16. </many-to-one> 
  17. <propertygeneratedpropertygenerated="never"lazy="false"name="orderNumber"type="java.lang.String"> 
  18. <columnlengthcolumnlength="50"name="ORDER_NUMBER"/> 
  19. </property> 
  20. <propertygeneratedpropertygenerated="never"lazy="false"name="price"type="java.lang.Double"> 
  21. <columnnamecolumnname="PRICE"precision="18"scale="3"/> 
  22. </property> 
  23. </class> 
  24. </hibernate-mapping> 
  25. <many-to-oneclassmany-to-oneclass="onetomany.Customer"fetch="select"name="customer"> 
  26. <columnnamecolumnname="CUSTOMER_id"precision="18"scale="0"/> 
  27. </many-to-one> 

表示CUSTOMER熟悉對應的類,和其作為key的列名,上面這些都可以在MyEclipse里面自動生成。另外注意的一點是,在生成的DAO里面,涉及表單操作的save()和delete()方法,必須要事件提交,數據庫才有反映??梢跃驮揌ibernate.xml,或者用下面這樣代碼來實現:

  1. Sessionse=getSession();  
  2. Transactiontx=se.beginTransaction();  
  3. se.delete(persistentInstance);  
  4. //se.save(instance);  
  5. tx.commit(); 

4、驗證效果

1、新增用戶

如果新增一個用戶,該用戶里面包含有兩個表單,那么,由于持久層已經實現了邏輯關系,只要用戶類里面的set包含了表單,則表單可以自動增加。實現代碼:

  1. CustomerDAOcd=newCustomerDAO();  
  2. Customerxd=newCustomer("王小虎",20,null);  
  3. Ordersord1=newOrders();  
  4. ord1.setCustomer(xd);  
  5. ord1.setOrderNumber("王小虎的買單1");  
  6. Ordersord2=newOrders();  
  7. ord2.setCustomer(xd);  
  8. ord2.setOrderNumber("王小虎的買單2");  
  9. Setrderses=newHashSet();  
  10. orderses.add(ord1);  
  11. orderses.add(ord2);  
  12. xd.setOrderses(orderses);  
  13. cd.save(xd); 

代碼里面,加入一個王小虎用戶。兩個訂單,通過setOrderses加入,只使用cd.save這一個對持久層操作。完成后查詢:

  1. 王小虎  
  2. =================================  
  3. 王小虎的買單1  
  4. 王小虎的買單2 

顯示,CUSTOMER里面加入了王小虎,ORDERS里面也加入他的訂單。

2、刪除操作

  1. List<Customer>csList=cd.findByProperty("name","王小虎");  
  2. for(Customercs:csList){  
  3. cd.delete(cs);  

這個很簡單了,通過其中findByProperty("name","王小虎");對應SQL為deletefromtableCUSTOMERwherename=''王小虎';刪除了王小虎,而ORDERS里面,王小虎對應的表單也同時被刪除。

5、小小總結

Hibernate的多對一和一對多處理,還是挺方便的,如果在減少數據庫復雜度的原則來說,把一些邏輯處理放在持久層是一個常見的方法。

【編輯推薦】

  1. Hibernate批量更新與刪除實例淺析
  2. 簡述Hibernate Synchronizer學習筆記
  3. Hibernate column屬性簡介
  4. 概括Hibernate查詢語言
  5. Hibernate cartridge學習總結
責任編輯:王曉東 來源: ITPUB個人空間
相關推薦

2009-09-22 09:55:58

Hibernate實例

2009-06-04 16:14:22

Hibernate一對Hibernate一對Hibernate多對

2009-07-21 17:31:39

iBATIS一對多映射

2023-06-12 08:09:01

FlaskSQLAlchemy

2009-06-03 16:18:16

Hibernate關系代碼實例

2022-02-18 11:05:25

Jpa配置Address

2009-06-04 10:34:19

Hibernate一對一對多關系配置

2009-06-03 16:27:27

Hibernate一對一關系

2012-03-21 11:43:41

JavaHibernate

2009-06-18 14:22:06

Hibernate多對Hibernate

2009-09-23 10:37:50

Hibernate一對

2010-07-07 08:33:09

SQL Server學

2012-02-08 13:34:08

HibernateJava

2009-09-23 10:57:02

Hibernate一對

2009-06-24 15:51:47

Entity Bean一對多映射

2011-03-25 10:49:30

Join一對多

2010-09-10 13:45:18

SQLCOUNT()函數

2011-08-17 10:28:53

多對多查詢SQL Server

2009-07-21 17:39:50

iBATIS的多對多映

2019-05-12 14:10:07

物聯網DDOS網絡攻擊
點贊
收藏

51CTO技術棧公眾號

粉嫩一区二区三区在线观看| 色呦呦中文字幕| 日韩午夜电影网| 欧美一区三区二区| 国产素人在线观看| 久草在现在线| 国产精品亚洲第一| 69av在线视频| 激情五月激情综合| 欧美男男freegayvideosroom| 欧美日韩在线视频一区| 色噜噜狠狠色综合网| 国产露脸国语对白在线| 亚洲乱亚洲高清| 日韩一区二区在线视频| 亚洲欧美日韩色| 国精品产品一区| 亚洲国产中文字幕在线视频综合| 日本一区二区免费看| 99re只有精品| 青青草97国产精品免费观看 | 国产精品久久二区| 青青草手机视频在线观看| 国产精品免费不| 精品福利一区二区三区| 午夜久久久精品| 国产直播在线| 亚洲免费观看在线观看| 狠狠爱一区二区三区| 国产成人精品一区二三区四区五区 | 在线观看视频99| 给我免费观看片在线电影的| 国产va免费精品观看精品| 色哟哟国产精品免费观看| 国产成人艳妇aa视频在线| 五月婷婷在线视频| 国产女人18毛片水真多成人如厕| 91九色露脸| 一级黄色大毛片| 日韩和欧美的一区| 欧美在线观看网址综合| 五月天婷婷网站| 欧美精品一卡| 伦理中文字幕亚洲| 成人无码精品1区2区3区免费看| 在线成人动漫av| 日韩国产中文字幕| 特级西西人体4444xxxx| 最新精品在线| 91精品国产乱码| 九九精品久久久| 成人在线不卡| 欧美色区777第一页| 女人扒开屁股爽桶30分钟| а√天堂中文在线资源8| 亚洲成人动漫一区| 国产精品无码av在线播放| av白虎一区| 欧美日韩加勒比精品一区| 青青青青草视频| 国产99在线观看| 日韩欧美精品网址| 成人黄色片视频| 日韩精品麻豆| 欧美日韩成人一区二区| 天天干天天操天天玩| 99久久er| 欧美怡红院视频| 在线黄色免费看| 久久久91麻豆精品国产一区| 欧美一级久久久久久久大片| 日韩精品――色哟哟| 岛国精品一区| 亚洲欧美综合另类中字| 欧美 日韩 成人| 亚洲成人99| 久久久日本电影| 四虎精品永久在线| 另类欧美日韩国产在线| 91免费版网站入口| 丰满肉肉bbwwbbww| 久久网站热最新地址| 日韩一区二区电影在线观看| 欧美日本高清| 亚洲综合av网| 成年人视频观看| 成人免费黄色| 精品卡一卡二卡三卡四在线| 久久久久久久久免费看无码| 成人羞羞网站入口| 久久99精品久久久久久噜噜| 国产成人无码精品久在线观看| 久久久久国产精品一区二区| 成人免费视频在线观看超级碰| 国产黄频在线观看| 久久久久久久电影| 狠狠噜天天噜日日噜| 美女福利一区二区| 91精品麻豆日日躁夜夜躁| 大尺度做爰床戏呻吟舒畅| 精品亚洲成人| 欧美激情视频在线免费观看 欧美视频免费一 | 国产精品久久久久影院老司| 国产日产欧美一区二区| 亚洲国产福利| 欧美一级免费大片| 日韩免费成人av| 一区精品久久| 国产美女久久精品香蕉69| 欧美 日韩 综合| 国产精品久久久久三级| 国产精品999视频| а天堂中文最新一区二区三区| 日韩精品免费在线视频观看| 蜜桃av免费在线观看| 日韩午夜在线电影| 97视频资源在线观看| yiren22亚洲综合伊人22| 午夜精品久久久久久久久| 91小视频在线播放| 国产一区不卡| 欧美怡红院视频一区二区三区| 国产又黄又爽视频| 中文字幕高清不卡| 少妇高清精品毛片在线视频| 日韩高清二区| 日韩中文字幕在线播放| 午夜精品免费观看| 99精品视频一区二区| 欧美中文字幕在线观看视频| japansex久久高清精品| 亚洲人a成www在线影院| 国产精品第一页在线观看| 国产精品一区二区你懂的| 神马欧美一区二区| 三级成人黄色影院| 精品亚洲aⅴ在线观看| 国产亚洲第一页| 国产高清精品在线| 国产高清免费在线| 日韩一级视频| 亚洲一级黄色片| 在线精品免费视| 久久这里只有精品首页| 国产青青在线视频| 国产一区调教| 午夜免费久久久久| 人妻无码中文字幕免费视频蜜桃| 亚洲日本电影在线| 一级片黄色免费| 欧美.日韩.国产.一区.二区| 91美女福利视频高清| a级片国产精品自在拍在线播放| 欧美绝品在线观看成人午夜影视| 亚洲色图 激情小说| 蜜桃视频一区二区三区在线观看| 日本午夜精品一区二区三区| 影音成人av| 视频直播国产精品| 国产色视频在线| 一区二区三区四区不卡视频| 手机在线视频一区| 一区二区国产在线| 91精品免费在线| 精品国产制服丝袜高跟| 日韩av片专区| 伊人色**天天综合婷婷| 亚洲free性xxxx护士hd| 在线观看中文| 亚洲电影在线观看| 国产一级片毛片| 欧美韩日一区二区三区四区| 国产精品v日韩精品v在线观看| 手机在线电影一区| 99久热re在线精品视频| 美女网站视频在线| 日韩精品在线第一页| 国产又粗又猛又爽又| 亚洲丝袜自拍清纯另类| av在线天堂网| 国产精品综合| 亚洲巨乳在线观看| 欧美精品三级在线| 2019国产精品自在线拍国产不卡| 内衣办公室在线| 欧美精品18+| 国产乡下妇女做爰视频| 国产午夜精品在线观看| 国产精品久久久久久久av福利| 欧美午夜不卡| 欧美日韩一区在线观看视频| 亚洲日本中文| 2019av中文字幕| 黄色网址在线免费| 日韩精品在线免费观看视频| 亚洲一区二区天堂| 五月婷婷综合在线| 黄色一级片一级片| 99久久国产综合精品色伊| 一区二区三区国产免费| 国产精品www.| 亚洲乱码国产乱码精品天美传媒| 日本一区二区三区视频在线看 | 正义之心1992免费观看全集完整版| 最新亚洲国产| 欧洲亚洲女同hd| 99福利在线| 亚洲网站在线观看| 免费国产黄色片| 欧美浪妇xxxx高跟鞋交| 欧美日韩乱国产| 一区二区欧美在线观看| 久久午夜精品视频| 久久网这里都是精品| 国产清纯白嫩初高中在线观看性色| 首页欧美精品中文字幕| www.夜夜爱| 亚洲欧洲日韩| 亚洲日本一区二区三区在线不卡 | 国产一区二区女| 37pao成人国产永久免费视频| 欧美久久成人| 在线免费观看一区二区三区| 色棕色天天综合网| 韩国成人av| 风间由美一区二区av101| 成人黄色av网| 亚州一区二区三区| 欧美性受xxxx黑人猛交| 国产91足控脚交在线观看| 日韩亚洲成人av在线| 国产人成在线视频| 亚洲毛片在线看| 亚洲人成色777777精品音频| 日韩精品影音先锋| 国产丝袜在线视频| 91精品婷婷国产综合久久| 性高潮视频在线观看| 欧美丝袜第一区| 日韩精品在线观看免费| 天天做天天摸天天爽国产一区| 久久免费播放视频| 亚洲制服丝袜在线| 强乱中文字幕av一区乱码| 亚洲图片欧美激情| 色老板免费视频| 亚洲欧洲av一区二区三区久久| 微拍福利一区二区| 国产精品免费久久| 内射毛片内射国产夫妻| 中国色在线观看另类| 天天舔天天操天天干| 亚洲国产精品成人综合| 毛片aaaaaa| 国产精品久久久久久久久搜平片| 亚洲最大成人综合网| 国产人成亚洲第一网站在线播放| 摸摸摸bbb毛毛毛片| 欧美韩国日本不卡| 久久嫩草捆绑紧缚| 亚洲欧美国产77777| 精品国产精品国产精品| 樱花草国产18久久久久| 九九精品在线观看视频| 亚洲国产精品自拍| 亚洲伊人成人网| 91激情五月电影| 92久久精品一区二区| 欧美一区二区三区四区视频| 丰满人妻一区二区三区免费视频| 亚洲精品短视频| 国内在线精品| 久久综合亚洲社区| 678在线观看视频| 日本aⅴ大伊香蕉精品视频| 成人做爰视频www| 成人黄色片视频网站| 天堂99x99es久久精品免费| 日本一区二区三区视频在线观看| 日韩电影免费网站| 国产精品免费看久久久无码| 亚洲一区二区三区高清| 性猛交ⅹ×××乱大交| 国产精品 日产精品 欧美精品| 国产伦精品一区三区精东| 久久久无码精品亚洲日韩按摩| 老司机深夜福利网站| 亚洲成人福利片| 亚洲中文字幕一区二区| 亚洲精品一区二区在线观看| 九色视频在线观看免费播放| 久久久精品视频成人| 国产不卡人人| 成人a在线观看| 亚洲欧美日本伦理| 日韩一二区视频| 久久不射2019中文字幕| 五月六月丁香婷婷| 91一区二区在线| 2025国产精品自拍| 色综合久久九月婷婷色综合| 国产模特av私拍大尺度| 亚洲老板91色精品久久| 一二三四区在线观看| 国产成人福利视频| 国产精品自在| 一级黄色免费在线观看| 性色一区二区三区| 国产精品偷伦视频免费观看了| www激情久久| 欧美日韩国产精品综合| 欧美无砖砖区免费| 天天操天天操天天操| 久久精品精品电影网| 日本韩国欧美| 国产欧美欧洲| 综合久久十次| 手机看片一级片| 久久精品视频在线看| 国产 日韩 欧美 成人| 91麻豆精品国产自产在线观看一区| 你懂得在线网址| 91av在线播放| 精品在线网站观看| 波多野结衣av一区二区全免费观看| 蜜臀av亚洲一区中文字幕| 毛茸茸多毛bbb毛多视频| 一二三四区精品视频| 国产麻豆一精品一男同| 搡老女人一区二区三区视频tv| 亚洲精品福利电影| 久久香蕉综合色| 一区在线免费| 成人做爰69片免费| 亚洲伦理在线精品| 国产精品一区二区三区在线免费观看 | 亚洲狠狠爱一区二区三区| 99在线精品视频免费观看软件| 色先锋资源久久综合5566| 成人在线爆射| 品久久久久久久久久96高清| 国产精品五区| 少妇大叫太粗太大爽一区二区| 午夜日韩在线电影| 五月激情婷婷综合| 91av在线看| 在线看成人短视频| 爱情岛论坛成人| 国产视频一区在线播放| 波多野结衣视频在线观看| 亚洲欧洲国产精品| 国产在线|日韩| 中文字幕在线亚洲精品| 久久精品国产色蜜蜜麻豆| 5566中文字幕| 日韩三级精品电影久久久| 羞羞的视频在线看| 成人资源av| 国产精品亚洲欧美| 精品无码在线观看| 欧美日本在线观看| а√天堂8资源在线官网| 96久久精品| 亚洲精品精选| 国产激情在线免费观看| 在线亚洲高清视频| 欧美日韩欧美| 成人高清在线观看| 翔田千里一区二区| 手机毛片在线观看| 日韩一级片网站| 黑森林国产精品av| 日韩欧美一区二区三区四区| 狠狠色丁香婷综合久久| 久草免费在线视频观看| 亚洲精品视频在线观看视频| 成人不卡视频| 日本黄大片在线观看| 久久蜜桃一区二区| 国产伦精品一区二区三区免.费| 久久99精品久久久久久噜噜| 欧美一区 二区| 亚洲免费看av| 亚洲香肠在线观看| freemovies性欧美| 99国产视频在线| 久久国产主播| 一区二区视频免费看| 亚洲精品电影网站| 国产精品欧美一区二区三区不卡 | 日韩精品福利网| 人妻人人澡人人添人人爽| 亚洲成人性视频| www.一区| av高清在线免费观看| 国产精品视频一二三区 | 国产性猛交xxxx免费看久久| 久久的色偷偷| 中文字幕视频在线免费观看| 一区二区三区中文字幕精品精品 |