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).































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


.
5
3}

2

3

4




5

說明:在組織hql語句"select new Faqcontent(faqc.faqcntId,faqc.faqcatalog,faqc.faqcntTitle) from faqcontent faq "時,對應的實體對象Faqcontent一定要有相應的構造方法。
---------------------
月下孤城
mail:eagle_daiqiang@sina.com