eagle

          學(xué)無止境,細節(jié)決定成敗.
          posts - 12, comments - 11, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          hibernate 實體字段延遲加載簡單處理方式

          Posted on 2009-07-16 17:46 月下孤城 閱讀(2280) 評論(0)  編輯  收藏 所屬分類: hibernate

          hibernate中對字段的延遲加載一般通過兩種方式處理:
              1.hibernate3提供對實體對象字段延遲加載屬性(lazy=true/false)設(shè)置,并借助類增強器對二進制Class文件進行強化處理,然后就可以像使用set集合一樣使用字段的延遲加載。
          詳細請參考:http://www.aygfsteel.com/wiflish/archive/2006/08/15/63692.html

              2.通過實體對象的粒度細分來來實現(xiàn)。
          詳細請參考:http://dingjun1.javaeye.com/blog/184082

          但以上實現(xiàn)都很麻煩。對字段的延遲加載總覺得沒set結(jié)合的延遲來的簡單。換個思考方式,在加載實體對象的時候如果只加載需要的字段屬性,不查詢延遲加載的字段,同樣達到提高效率的目的。只是這樣在返回的結(jié)果列表對象類型卻為Object數(shù)組,處理結(jié)果集時又和jdbc編程有點相似了,感覺有點怪怪的^_^(好像hibnernate對象映射優(yōu)勢沒顯示出來),仔細的查了下資料,其實hibernate select中支持new 關(guān)鍵詞查詢,在執(zhí)行查詢后她會把select的字段屬性值根據(jù)構(gòu)造器的反射原理自動注入到new 的對象屬性中。

          實例演示:
          1.實體類:其中faqContent數(shù)據(jù)庫中類型varcher(8000).

          public class Faqcontent implements 
          java.io.Serializable
          {
              
          private String     faqcntId;

              
          private Faqcatalog faqcatalog;//目錄id

              
          private String     faqcntTitle;//title

              
          private String     faqcntConent;//內(nèi)容字段,varchar(8000)字符

          public Faqcontent()
              
          {
              }

              
              
          /**
               * 
          @param faqcntId
               * 
          @param faqcatalog
               * 
          @param faqcntTitle
               */

              
          public Faqcontent(String faqcntId, Faqcatalog faqcatalog,
                      String faqcntTitle)
              
          {
                  
          super();
                  
          this.faqcntId = faqcntId;
                  
          this.faqcatalog = faqcatalog;
                  
          this.faqcntTitle = faqcntTitle;
                 }


          .set
          /get方法
          }

          2.Service中部分代碼:
          1public List<Faqcontent> getPageOfFaqcontentList(int pageSize,int recordPerPage,String condition,List paramValues){
          22           StringBuilder hqlSb = new StringBuilder();
          3                 hqlSb.append(" select new Faqcontent(faqc.faqcntId,faqc.faqcatalog,faqc.faqcntTitle)   from faqcontent faqc ");
          4                  .
          53}

          說明:在組織hql語句"select new Faqcontent(faqc.faqcntId,faqc.faqcatalog,faqc.faqcntTitle) from faqcontent faq "時,對應(yīng)的實體對象Faqcontent一定要有相應(yīng)的構(gòu)造方法。


          ---------------------
          月下孤城
          mail:eagle_daiqiang@sina.com

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 若尔盖县| 浦东新区| 金川县| 清水河县| 卫辉市| 木里| 三穗县| 鹤庆县| 徐汇区| 尖扎县| 巴里| 隆子县| 保康县| 民丰县| 彭阳县| 神木县| 英超| 武邑县| 东乡县| 蒙城县| 沽源县| 吉林省| 康保县| 印江| 乐业县| 张家界市| 电白县| 博白县| 溧阳市| 游戏| 玛沁县| 三门县| 巴林左旗| 昌江| 南康市| 盐边县| 青铜峡市| 东丰县| 蒙城县| 丹江口市| 丹凤县|