eagle

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

          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.通過實體對象的粒度細分來來實現(xiàn)。
          詳細請參考:http://dingjun1.javaeye.com/blog/184082

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


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

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 阜宁县| 平山县| 丽江市| 新野县| 库伦旗| 鄂温| 剑川县| 铜梁县| 许昌市| 秦安县| 上虞市| 南开区| 遵化市| 沂南县| 黄山市| 湖南省| 建阳市| 盘山县| 井陉县| 阿图什市| 镇安县| 雅安市| 沙田区| 赤城县| 林西县| 北流市| 芜湖市| 酉阳| 万州区| 乳山市| 白沙| 宁波市| 岐山县| 克山县| 县级市| 琼海市| 洛川县| 漳平市| 桓仁| 班玛县| 晋中市|