posts - 66,  comments - 11,  trackbacks - 0
              我們的目標(biāo)是為數(shù)據(jù)邏輯層及業(yè)務(wù)邏輯層提供更加易于操作的對(duì)象,根據(jù)這里的情況,將email字段映射為一個(gè)List集合

          類型是個(gè)不錯(cuò)的選擇,如何將一個(gè)字段映射為L(zhǎng)ist類型,Hibernate并沒有提供原生支持,我們必須實(shí)現(xiàn)自己的UserType.
            
          package com.wyq.hibernate;

          public interface UserType {
              
          /**
               * 返回UserType所映射字段的SQL類型(java.sql.Types)
               * 返回類型為int[],其中包含了映射各字段的SQL類型代碼
               * (UserType可以映射到一個(gè)或者多個(gè)字段)
               * 
          @see java.sql.Types
               * 
          @return int[] the typecodes
               
          */
              
          public int[] sqlTypes();
              
          /**
               * UserType.nullSafeGet()所返回的自定義數(shù)據(jù)類型
               * 
          @return Class
               
          */
              
          public Class returnedClass();
              
          /**
               * 自定義數(shù)據(jù)類型的對(duì)比方法
               * 此方法將用作臟數(shù)據(jù)檢查,參數(shù)x,y分別為數(shù)據(jù)的2個(gè)副本
               * 如果equals方法返回false,則Hibernate將認(rèn)為數(shù)據(jù)發(fā)生變化,并將變化更新到庫(kù)表中
               
          */
              
          public boolean equals(Object x,Object y)throws HiberanteException;
              
          /**
               * 從JDBC ResultSet讀出數(shù)據(jù),將其轉(zhuǎn)換為自定義類型后返回
               * (此方法要求對(duì)可能出現(xiàn)的null值進(jìn)行處理)
               * names中包含了當(dāng)前自定義類型的映射字段名稱。
               
          */
              
          public Object nullSafeGet(ResultSet rs,String[] names,Object owner)throws HibernateException,SQLException;
              
          /**
               * 本方法將在Hibernate進(jìn)行數(shù)據(jù)保存時(shí)被調(diào)用
               * 我們可以通過PreparedStatement將自定義數(shù)據(jù)寫入對(duì)應(yīng)的庫(kù)表字段
               
          */
              
          public void nullSafeSet(PreparedStatement st,Object value,int index)throws HibernateException,SQLException;
              
          /**
               * 提供自定義類型的完全復(fù)制方法
               * 本方法將用作構(gòu)造返回對(duì)象
               * 當(dāng)nullSafeGet方法調(diào)用之后,我們獲得了自定義數(shù)據(jù)對(duì)象,在向用戶返回自定義數(shù)據(jù)之前,deepCopy方法將被調(diào)用,
               * 它將根據(jù)自定義數(shù)據(jù)對(duì)象構(gòu)造一個(gè)完全拷貝,并將此拷貝返回給用戶使用。
               * 此時(shí),我們就得到了自定義數(shù)據(jù)對(duì)象的2個(gè)版本,第一個(gè)是從數(shù)據(jù)庫(kù)讀出的原始版本,其二是我們通過deepCopy構(gòu)造的
               * 復(fù)制版本,原始版本將由Hibernate負(fù)責(zé)維護(hù),復(fù)制版本將由用戶使用,原始版本用作稍后的臟數(shù)據(jù)檢查一句;Hibernate
               * 將在臟數(shù)據(jù)檢查過程中將這2個(gè)版本的數(shù)據(jù)進(jìn)行比對(duì),如果數(shù)據(jù)發(fā)生了變化,則執(zhí)行對(duì)應(yīng)的持久化操作。
               * 數(shù)據(jù)發(fā)生了變化,則執(zhí)行對(duì)應(yīng)的持久化操作。
               
          */
              
          public Object deepCopy(Object value)throws HibernateException;
              
          /**
               * 本類型實(shí)例是否可變
               
          */
              
          public boolean isMutable();
          }

          posted on 2009-10-16 15:59 王永慶 閱讀(163) 評(píng)論(0)  編輯  收藏 所屬分類: HIBERNATE
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          • 1.?re: 心中的那個(gè)她[未登錄]
          • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
          • --王永慶
          • 2.?re: 心中的那個(gè)她[未登錄]
          • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無的人就好了。這種事講的是緣分吧。別人對(duì)你好不好其實(shí)不太重要。放開心情就好了。
          • --萍水相逢
          • 3.?re: 心中的那個(gè)她
          • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
          • --咖啡妝
          • 4.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --王永慶
          • 5.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --隔葉黃鶯

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 星座| 旬邑县| 河津市| 灵台县| 牙克石市| 惠州市| 鄯善县| 常山县| 林州市| 梨树县| 泸水县| 商南县| 鹤壁市| 土默特左旗| 福建省| 景宁| 常宁市| 垣曲县| 禹州市| 闸北区| 谷城县| 双鸭山市| 垫江县| 武安市| 武宁县| 尼玛县| 博客| 句容市| 营山县| 湘西| 长乐市| 乐业县| 且末县| 天祝| 博乐市| 司法| 临漳县| 苗栗县| 桑日县| 会理县| 开平市|