eagle

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

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

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

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

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

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

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

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

              
          private Faqcatalog faqcatalog;//目錄id

              
          private String     faqcntTitle;//title

              
          private String     faqcntConent;//內容字段,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 "時,對應的實體對象Faqcontent一定要有相應的構造方法。


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

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


          網站導航:
           
          主站蜘蛛池模板: 三亚市| 碌曲县| 安宁市| 乌拉特后旗| 东兴市| 无锡市| 增城市| 康定县| 临汾市| 西城区| 佛教| 塔城市| 桓仁| 无极县| 青河县| 红河县| 保靖县| 罗田县| 广昌县| 晋城| 通江县| 微山县| 翼城县| 万盛区| 汪清县| 育儿| 双牌县| 密云县| 获嘉县| 扶风县| 静乐县| 龙山县| 金昌市| 宁德市| 黄平县| 普兰县| 塔城市| 达日县| 雷波县| 荣昌县| 乐山市|