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

淺析Hibernate一對(duì)多數(shù)據(jù)關(guān)聯(lián)的問題(二)

開發(fā) 后端
這里介紹Hibernate一對(duì)多數(shù)據(jù)關(guān)聯(lián)。指的是單向一對(duì)多數(shù)據(jù)關(guān)聯(lián)一個(gè)用戶有多個(gè)地址,在用戶類TUser中包含地址類TAddress集合。

Hibernate一對(duì)多數(shù)據(jù)關(guān)聯(lián)。指的是單向一對(duì)多數(shù)據(jù)關(guān)聯(lián)一個(gè)用戶有多個(gè)地址,在用戶類TUser中包含地址類TAddress集合。

Hibernate如果上手了,那么所謂的一對(duì)多,多對(duì)一,多對(duì)多,一對(duì)一這些關(guān)系,應(yīng)該很快能理解.下面主要介紹Hibernate一對(duì)多的問題。

1.由TUser對(duì)象將自身的id賦給addr.user_id,這樣導(dǎo)致addr屬性值變動(dòng),在事物提交的時(shí)候,會(huì)進(jìn)行update。


1)當(dāng)save該用戶的時(shí)候,

  1. insert into t_address  (user_id, address, zipcode, tel) value (null, "HongKong", "233123", "1123")  

2)當(dāng)tx.commit()時(shí):

  1. update t_address user_id="1"address="HongKong"zipcode="233123",tel="1123" where id=2

這樣,在save user時(shí),就會(huì)出現(xiàn)約束違例。

調(diào)整方法:
可以在定義數(shù)據(jù)表字段時(shí)候,不加NOT NULL約束。或者在開始為user_id隨意賦一個(gè)非空值(因?yàn)檫€要update,不正確也沒關(guān)系),或者將user_id字段從TAddress.hbm.xml中刪除(本例就是這樣實(shí)現(xiàn))。但是這些都是權(quán)宜之計(jì),用兩條SQL語句完成一次數(shù)據(jù)庫操作,性能低下。而雙向一對(duì)多解決了這個(gè)問題。
下面來實(shí)現(xiàn)雙向關(guān)聯(lián):修改配置文件 TUser.hbm.xml

  1. xml version="1.0"?> 
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  3. <hibernate-mapping> 
  4.     <class name="cn.blogjava.start.TUser" table="T_User" catalog="sample" 
  5.      dynamic-update="true" dynamic-insert="true" 
  6.     > 
  7.         <id name="id" type="integer"> 
  8.             <column name="id" /> 
  9.             <generator class="native" /> 
  10.         id> 
  11.         <property name="name" type="string" column="name" /> 
  12.         <property name="age" type="java.lang.Integer" column="age" /> 
  13.  
  14.         <set   
  15.             name="address"   
  16.             table="t_address"   
  17.             inverse="true" 
  18.             cascade="all"   
  19.             order-by="zipcode asc" 
  20.             > 
  21.             <key column="user_id"> 
  22.             key> 
  23.             <one-to-many class="cn.blogjava.start.TAddress" /> 
  24.         set> 
  25.     class> 
  26. hibernate-mapping> 

設(shè)定inverse="true",表明將TUser類作為被動(dòng)類,將數(shù)據(jù)關(guān)聯(lián)的維護(hù)工作交給關(guān)聯(lián)對(duì)象TAddress來管理。
在one-to-many模型中,將many一方設(shè)為主控方有助于性能的改善。(讓總理記住每個(gè)人困難,但是每個(gè)人記住總理方便)

TAddress.hbm.xml

  1. xml version="1.0"?> 
  2. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
  3. <hibernate-mapping> 
  4.     <class name="cn.blogjava.start.TAddress" table="T_Address" catalog="sample"> 
  5.         <id name="id" type="integer"> 
  6.             <column name="id" /> 
  7.             <generator class="native" /> 
  8.         id> 
  9.         <property name="address" type="string" column="address" /> 
  10.         <property name="zipcode" type="string" column="zipcode" /> 
  11.         <property name="tel" type="string" column="tel" /> 
  12.         <property name="type" type="string" column="type" /> 
  13.         <property name="idx" type="java.lang.Integer" column="idx" /> 
  14.         <many-to-one 
  15.                   name="user"   
  16.                   class="cn.blogjava.start.TUser" 
  17.                   cascade="none" 
  18.                   outer-join="auto" 
  19.                   update="true"                    
  20.                   insert="true" 
  21.                   access="property" 
  22.                   column="user_id" 
  23.                   not-null="true" 
  24.         /> 
  25.     class> 
  26. hibernate-mapping> 

2.對(duì)TAddress.java做如下改造:去掉user_id字段,增加user字段,和getter,setter方法。

  1. package cn.blogjava.start;  
  2.  
  3. import java.io.Serializable;  
  4.  
  5. public class TAddress implements Serializable {  
  6.       
  7.     private Integer id;  
  8.     private String address;  
  9.     private String zipcode;  
  10.     private String tel;  
  11.     private String type;  
  12.     private Integer idx;  
  13.     private TUser user;  
  14.       
  15.     public TUser getUser() {  
  16.         return user;  
  17.     }  
  18.     public void setUser(TUser user) {  
  19.         this.user = user;  
  20.     }  
  21.     public Integer getId() {  
  22.         return id;  
  23.     }  
  24.     public void setId(Integer id) {  
  25.         this.id = id;  
  26.     }  
  27.     public String getAddress() {  
  28.         return address;  
  29.     }  
  30.     public void setAddress(String address) {  
  31.         this.address = address;  
  32.     }  
  33.     public Integer getIdx() {  
  34.         return idx;  
  35.     }  
  36.     public void setIdx(Integer idx) {  
  37.         this.idx = idx;  
  38.     }  
  39.     public String getTel() {  
  40.         return tel;  
  41.     }  
  42.     public void setTel(String tel) {  
  43.         this.tel = tel;  
  44.     }  
  45.     public String getType() {  
  46.         return type;  
  47.     }  
  48.     public void setType(String type) {  
  49.         this.type = type;  
  50.     }  
  51.     public String getZipcode() {  
  52.         return zipcode;  
  53.     }  
  54.     public void setZipcode(String zipcode) {  
  55.         this.zipcode = zipcode;  
  56.     }  
  57.  
  58. }  

3.測(cè)試代碼
既然TUser不維護(hù)關(guān)聯(lián)關(guān)系,需要TAddress需要自己來維護(hù)TUser,所以需要addr.setUser(user);

  1. package cn.blogjava.start;  
  2.  
  3. import java.util.HashSet;  
  4. import java.util.Iterator;  
  5. import java.util.List;  
  6.  
  7. import junit.framework.Assert;  
  8. import junit.framework.TestCase;  
  9.  
  10. import org.hibernate.HibernateException;  
  11. import org.hibernate.Session;  
  12. import org.hibernate.SessionFactory;  
  13. import org.hibernate.Transaction;  
  14. import org.hibernate.cfg.Configuration;  
  15.  
  16.  
  17. public class HibernateTest extends TestCase {  
  18.       
  19.     Session session = null;  
  20.  
  21.     protected void setUp() {  
  22.         try {  
  23.             Configuration config = new Configuration().configure();  
  24.             SessionFactory sessionFactory = config.buildSessionFactory();  
  25.             session = sessionFactory.openSession();  
  26.               
  27.         } catch (HibernateException e) {  
  28.             e.printStackTrace();  
  29.         }          
  30.     }  
  31.  
  32.     protected void tearDown() {  
  33.         try {  
  34.             session.close();          
  35.         } catch (HibernateException e) {  
  36.             e.printStackTrace();  
  37.         }          
  38.     }      
  39.       
  40.     /** *//**  
  41.      * 對(duì)象持久化測(cè)試(Insert方法)  
  42.      */          
  43.     public void testInsert() {  
  44.         Transaction tran = null;  
  45.         try {  
  46.           
  47.             TUser user = new TUser();  
  48.             user.setName("byf");  
  49.             user.setAge(new Integer(26));  
  50.               
  51.             TAddress addr = new TAddress();  
  52.             addr.setTel("1123");  
  53.             addr.setZipcode("233123");  
  54.             addr.setAddress("HongKong");  
  55.             addr.setUser(user);  
  56.               
  57.             TAddress addr2 = new TAddress();  
  58.             addr2.setTel("139");  
  59.             addr2.setZipcode("116001");  
  60.             addr2.setAddress("dalian");         
  61.             addr2.setUser(user);  
  62.  
  63.             TAddress addr3 = new TAddress();  
  64.             addr3.setTel("136");  
  65.             addr3.setZipcode("100080");  
  66.             addr3.setAddress("beijing");  
  67.             addr3.setUser(user);  
  68.               
  69.             //設(shè)置關(guān)聯(lián)  
  70.             HashSet set = new HashSet();  
  71.             set.add(addr);  
  72.             set.add(addr2);  
  73.             set.add(addr3);  
  74.             user.setAddress(set);  
  75.                                      
  76.             tran = session.beginTransaction();                                  
  77.             //插入user信息  
  78.             session.save(user);  
  79.             session.flush();  
  80.             tran.commit();  
  81.             Assert.assertEquals(user.getId().intValue()>0 ,true);  
  82.         } catch (HibernateException e) {  
  83.             e.printStackTrace();  
  84.             Assert.fail(e.getMessage());  
  85.             if(tran != null) {  
  86.                 try {  
  87.                     tran.rollback();  
  88.                 } catch (Exception e1) {  
  89.                     e1.printStackTrace();  
  90.                 }  
  91.             }  
  92.         }  
  93.     }  
  94.       
  95.     /** *//**  
  96.      * 對(duì)象讀取測(cè)試(Select方法)  
  97.      */              
  98.     public void testSelect(){  
  99.         String hql = " from TUser where name='byf'";  
  100.         try {  
  101.             List userList = session.createQuery(hql).list();  
  102.             TUser user = (TUser)userList.get(0);  
  103.             System.out.println("user name is " + user.getName());  
  104.               
  105.             for (Iterator iter = user.getAddress().iterator(); iter.hasNext();) {  
  106.                 TAddress addr = (TAddress) iter.next();  
  107.                 System.out.println("user address is " + addr.getAddress());                  
  108.             }  
  109.             Assert.assertEquals(user.getName(), "byf");  
  110.         } catch (Exception e) {  
  111.             e.printStackTrace();  
  112.             Assert.fail(e.getMessage());  
  113.         }  
  114.     }  

以上介紹Hibernate一對(duì)多數(shù)據(jù)關(guān)聯(lián)。

【編輯推薦】

  1. 生成Hibernate Mapping文件的分析
  2. 對(duì)Hibernate中g(shù)et()與load()不同點(diǎn)分析
  3. Struts-Spring-Hibernate案例
  4. 簡(jiǎn)述Hibernate配置連接池
  5. 淺析Hibernate一對(duì)多數(shù)據(jù)關(guān)聯(lián)的問題(一)
責(zé)任編輯:仲衡 來源: baidu
相關(guān)推薦

2009-09-23 10:37:50

Hibernate一對(duì)

2012-03-21 11:43:41

JavaHibernate

2012-02-08 13:34:08

HibernateJava

2009-09-22 09:55:58

Hibernate實(shí)例

2009-06-04 10:34:19

Hibernate一對(duì)一對(duì)多關(guān)系配置

2009-06-04 16:14:22

Hibernate一對(duì)Hibernate一對(duì)Hibernate多對(duì)

2009-06-03 16:27:27

Hibernate一對(duì)一關(guān)系

2010-04-15 09:09:02

Hibernate

2009-08-17 10:34:51

NHibernate一

2009-06-03 16:18:16

Hibernate關(guān)系代碼實(shí)例

2009-09-22 17:32:38

Hibernate A

2009-06-17 14:55:26

Hibernate數(shù)據(jù)

2009-06-24 07:58:52

Hibernate多數(shù)

2009-09-28 17:23:51

Hibernate E

2010-07-07 08:33:09

SQL Server學(xué)

2009-12-23 09:31:11

寬帶路由上網(wǎng)故障

2009-09-21 13:31:10

Hibernate 3

2009-09-23 17:28:55

Hibernate C

2009-09-21 18:13:11

Hibernate S

2009-09-23 10:19:08

Hibernate分頁
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

老司机精品视频在线观看6| 日韩av电影在线播放| 91九色对白| 91国模少妇一区二区三区| 性网爆门事件集合av| 精品国产美女| 久久夜色精品一区| 欧美大片免费看| mm131国产精品| 男人av在线| 国产日韩一区| 亚洲精品在线观看视频| 午夜啪啪福利视频| 91中文字幕在线视频| jlzzjlzz亚洲女人| 日韩欧美www| 成人在线免费观看网址| 国产乱淫片视频| 五月天久久777| 欧美人与禽zozo性伦| 亚洲日本理论电影| 久操视频在线免费观看| 欧洲激情综合| 亚洲高清久久久久久| 欧美,日韩,国产在线| 无码精品一区二区三区在线 | 天堂一区二区在线| 亚洲精美色品网站| 国产黄色一级网站| 国产午夜精品一区理论片| 亚洲精品看片| 亚洲精品电影在线| 中文字幕第66页| 牛牛电影国产一区二区| 成人教育av在线| 欧美整片在线观看| 免费看污片的网站| 四虎影视国产精品| 一区二区三区91| 国产日韩久久| 加勒比在线一区| 天堂美国久久| 这里只有精品在线观看| 天堂av.com| 黑人玩欧美人三根一起进| 成人黄色一级视频| 99电影在线观看| 国产精品999在线观看| 国内黄色精品| 欧美一区二区在线视频| 黄页免费在线观看视频| 在线观看男女av免费网址| 波多野结衣91| 国产一区二区视频在线免费观看 | 五月天国产一区| 亚洲无码精品国产| 欧美人成网站| 亚洲欧美国产精品久久久久久久| 奇米影音第四色| 在线观看av免费| 亚洲色图第一区| 精品国产乱码一区二区三区四区| 久草视频在线免费| 日本女人一区二区三区| 久久久久国产一区二区三区| 永久免费毛片在线观看| 91精品久久久久久综合五月天| 欧美日韩美女视频| 99精品视频网站| 五月婷婷在线观看视频| 99精品视频免费在线观看| 国产精品视频xxxx| 亚洲一区欧美在线| 久久久久久久久丰满| 日韩精品极品在线观看| 色姑娘综合天天| 一区二区三区在线免费看| 亚洲精品一区二区三区精华液| 理论片大全免费理伦片| 欧美爱爱视频| 色成人在线视频| 欧美性潮喷xxxxx免费视频看| av福利在线播放| 91免费观看视频在线| 亚洲最大成人网色| 中文字幕视频免费观看| 久久精品电影| 97人洗澡人人免费公开视频碰碰碰| a一级免费视频| 亚洲第一福利社区| 亚洲高清在线观看| 伊人网伊人影院| 国产精品福利在线观看播放| 欧美风情在线观看| 日韩美一区二区| 在线视频免费在线观看一区二区| 欧美猛交ⅹxxx乱大交视频| 后入内射无码人妻一区| 禁果av一区二区三区| 精品国产网站地址| www中文在线| 精品国产网站| 欧美激情aaaa| 真实新婚偷拍xxxxx| 国产99久久久久久免费看农村| 91精品在线一区| 国产免费一区二区三区最新不卡| 免费av成人在线| 国产精品国产福利国产秒拍| 台湾佬中文在线| 国产一区二区三区在线观看精品 | 国产视频精品免费播放| 大尺度在线观看| 亚洲3区在线| 日韩精品综合一本久道在线视频| 中文字幕在线观看网址| 人体久久天天| 亚洲欧美综合图区| 麻豆视频免费在线播放| 最新国产拍偷乱拍精品| 91欧美日韩一区| 狠狠色伊人亚洲综合网站l| 久久一区二区三区国产精品| 国产日韩欧美大片| 成人国产综合| 欧美一区二区精品久久911| 成年人免费观看视频网站| 伊人久久亚洲影院| 午夜精品久久久久久久久久久久| 中文av免费观看| 久久久亚洲高清| 一区二区不卡在线视频 午夜欧美不卡' | 欧美××××黑人××性爽 | 中文字幕在线观看1| 成人美女视频在线观看18| 国产九区一区在线| 毛片免费在线| 天天色图综合网| 少妇高清精品毛片在线视频| jizz久久久久久| 亚洲欧美色婷婷| 特黄视频免费看| 久久精品国产免费看久久精品| 91在线网站视频| 免费看a在线观看| 尤物视频一区二区| 狠狠97人人婷婷五月| 激情小说一区| 中文字幕精品国产| 波多野结衣理论片| 国产女人18水真多18精品一级做| 色乱码一区二区三区熟女 | 欧美成人一品| 91国在线精品国内播放| 久久精品99北条麻妃| 国产精品一卡二卡| 日韩欧美视频一区二区三区四区| 九七电影韩国女主播在线观看| 欧美日韩高清一区二区| 欧美另类videoxo高潮| av不卡在线| 精品国产一区二区三区久久久久久| 91在线超碰| 51精品视频一区二区三区| 欧美夫妇交换xxx| 久久久久久久久久久妇女| 成人精品久久一区二区三区| 日韩电影免费| 亚洲国产精品久久不卡毛片| 黄色在线视频网| 66国产精品| 国产精品一区免费观看| 日韩伦理精品| 欧美成人bangbros| 91视频最新网址| 国产综合色精品一区二区三区| 日本老太婆做爰视频| 成人另类视频| 久久香蕉频线观| 毛片在线免费播放| 亚洲你懂的在线视频| 国产一线二线三线在线观看| 精品嫩草影院| 国产精品18久久久久久首页狼| 欧洲av在线播放| 亚洲乱码一区二区三区在线观看| 少妇精品无码一区二区| 99欧美视频| 精品国产aⅴ麻豆| av成人亚洲| 国模极品一区二区三区| japanese国产| 亚洲精品一二三区| 88久久精品无码一区二区毛片| 另类成人小视频在线| 日韩欧美视频免费在线观看| 国产亚洲高清一区| 久久艹在线视频| 色视频在线观看免费| 欧美军同video69gay| 欧美激情视频二区| 日本欧美一区二区在线观看| 欧美日韩视频免费在线观看| 欧美精品中文字幕亚洲专区| 国产在线观看不卡| 日本美女在线中文版| 欧美日韩一级视频| 老司机精品免费视频| 粉嫩一区二区三区在线看| 韩国中文字幕av| 在线亚洲免费| 久久亚洲国产成人精品无码区| 精品国产精品久久一区免费式 | 精品深夜福利视频| 成人做爰www免费看视频网站| 伊伊综合在线| 国产丝袜一区二区三区免费视频| 国产精品伊人久久 | 粗暴91大变态调教| 狠狠88综合久久久久综合网| 9a蜜桃久久久久久免费| 福利一区和二区| 日本精品视频在线播放| jizz一区二区三区| 萌白酱国产一区二区| 国产成人精品av在线观| 欧美三级在线播放| 无码人妻一区二区三区线| 午夜精品在线看| 丰满圆润老女人hd| 热久久免费视频| 久久久一本二本三本| 国内自拍一区| 精品国偷自产一区二区三区| 欧美毛片免费观看| 99视频免费观看蜜桃视频| 99re8精品视频在线观看| 欧美裸体男粗大视频在线观看| 日本欧美在线视频免费观看| 中文字幕精品在线| 成人影视在线播放| 日韩一级免费观看| 亚洲影院在线播放| 欧美日韩黄色大片| 黄色片免费观看视频| 亚洲成av人片在线观看| 日本熟妇色xxxxx日本免费看| 久久久激情视频| www.超碰97| 91天堂素人约啪| 四虎永久免费影院| 久久久久久综合| 熟女少妇内射日韩亚洲| 国产日本欧美一区二区| 亚洲色图第四色| 国产精品国产精品国产专区不片| 荫蒂被男人添免费视频| 99re视频精品| 日本黄色片在线播放| 亚洲综合激情另类小说区| 4438x全国最大成人| 91精品秘密在线观看| 正在播放精油久久| 精品嫩草影院| 蜜桃麻豆www久久国产精品| 99国内精品久久久久| 91久久久久久久| 日韩成人精品| 久久96国产精品久久99软件| 国产精品xnxxcom| av资源站久久亚洲| 妖精视频一区二区三区| 色爱区成人综合网| 欧美成人69av| 国产特级黄色大片| 青娱乐精品视频在线| 在线观看视频在线观看| 成人av在线资源网| 成人性生交大免费看| 国产精品久久久久久福利一牛影视| 日韩在线中文字幕视频| 欧美激情一区二区三区蜜桃视频| 永久免费看片直接| 有码一区二区三区| 91香蕉在线视频| 欧美日韩一级视频| 日本成人动漫在线观看| 国产一区二区三区18| 免费在线高清av| 久久久成人的性感天堂| 99re在线视频| 欧美黄色片在线观看| 欧美黑人巨大xxxxx| 亚洲一区二区三区乱码aⅴ| 欧美一级色片| 国产麻豆电影在线观看| 久久av一区| 少妇献身老头系列| 国产免费观看久久| 久久精品性爱视频| 亚洲永久免费av| 波多野结衣视频在线看| 日韩欧美一区二区在线视频| 精品福利视频导航大全| 欧美激情xxxx性bbbb| 欧美黄色a视频| 九九九九精品九九九九| 女人色偷偷aa久久天堂| 成人亚洲视频在线观看| 三级在线观看一区二区| 91人妻一区二区| 亚洲色图一区二区| 最新国产中文字幕| 亚洲精品动漫100p| 美女网站视频在线| 91香蕉嫩草影院入口| 精品国产一区一区二区三亚瑟| 日韩国产一级片| 中文一区二区| 18深夜在线观看免费视频| 国产欧美精品一区二区色综合朱莉| 国产在线观看免费av| 欧美一区二区三区免费在线看| 国产中文字幕在线看| 91极品视频在线| 成人性生交大片免费看中文视频| 一区二区在线观| 奇米一区二区三区| 欧美图片第一页| 高跟丝袜欧美一区| 你懂的网站在线| 久久久亚洲影院| 91精品国产自产精品男人的天堂 | 人妻夜夜爽天天爽| 久久久久久尹人网香蕉| 日韩高清二区| 亚洲啊啊啊啊啊| 国产一区二区久久| 顶级黑人搡bbw搡bbbb搡| 欧美少妇性性性| av影片免费在线观看| 国产精品视频白浆免费视频| 激情五月色综合国产精品| 久草在在线视频| 国产日韩高清在线| 日韩激情小视频| 欧美老女人在线| 免费a在线看| 91在线|亚洲| 国产在线不卡| 亚洲一级Av无码毛片久久精品| 亚洲一区国产视频| 日韩一级片中文字幕| 亚洲情综合五月天| 国产综合色在线观看| 999热视频在线观看| 欧美另类专区| www.男人天堂| 色婷婷av一区二区三区大白胸| 男操女在线观看| 国产精品一区二区3区| 成人av动漫| 欧美久久久久久久久久久久久| 91影院在线观看| 精品久久久久久久久久久国产字幕| 亚洲欧洲激情在线| 欧美v亚洲v综合v国产v仙踪林| 日韩中文在线字幕| 国产成人精品影院| 黄色av片三级三级三级免费看| 欧美日韩不卡一区二区| 手机在线免费观看av| 国产成人亚洲精品| 四季av一区二区三区免费观看| 日本手机在线视频| 久久众筹精品私拍模特| 自拍偷拍第八页| 欧美精品久久久久久久久| 女人丝袜激情亚洲| 99久久国产综合精品五月天喷水| 久久综合色播五月| 一本色道久久综合熟妇| 高清亚洲成在人网站天堂| 国产亚洲精品美女久久久久久久久久| 日韩av.com| 国产精品嫩草影院av蜜臀| 国产中文字幕视频| 久久精品99无色码中文字幕 | 天堂av中文在线观看| 51国产成人精品午夜福中文下载 | 亚洲另类av| 在线不卡一区二区三区| 亚洲国产日韩精品| 95在线视频| 国产一区二区在线网站 | 色哟哟无码精品一区二区三区| 欧美中文字幕久久| 免费资源在线观看| 97久久人人超碰caoprom欧美 | 国产精品91在线观看|