作者abola921 (墳都買不起了還想買房)
看板java
標題Re: [問題] Hibernate 多年來的疑問
時間Mon Apr 1 10:44:48 2013
※ 引述《lookjohn (《經濟狀況》赤貧)》之銘言:
: public class BeanASimple{
: private Long id;
: private String field1;
: private String field2;
: get , set ..
: }
: 這兩隻 皆指到 TableA (不管事用annotion或是ORM)..
任何情況,只要碰到有共享資源的情況下,都會有concurrency的問題
所以其實不用另外再建一個實體hibernate bean,也可以有類似的效果
常用來處理Group By 後的結果
HQL:
select new xxx.yyy.zzz.BeanASimple(id, field1, field2) /* full class name */
from BeanA
....
/* 使用HQL BeanASimple 必需有對應的Constructor */
Criteria:
List list = session.createCriteria(BeanA.class) /* 資料來源Bean */
.setProjection(Projections.projectionList()
/* 欄位對應 */
.add( Projections.property("id"), "id" )
.add( Projections.property("field1"), "field1" )
.setResultTransformer( /* 轉換到對應的class */
new AliasToBeanResultTransformer(BeanASimple.class) )
.list();
: ===
: 想請教:
: 使用語法 : "From TableA where 1=1" ; query.setMaxResults(1000);
: 在同樣10000筆的查詢之中,我使用的BeanASimple 的情況 是否優於BeanA?
: 是否下列幾個條件皆有比較好:
: 1.查詢效率
: 2.記憶體的佔用率
: 3.多人同時查詢的情況
: 這是我個人的認知,就觀念上不知是否是正確的或是有相對的謬論存在,
: 請各位大大不吝指教..:)
理論上不管各種情況,BeanASimple 的結果都會優於BeanA的
不過我會建議你試試看去比較StatelessSession跟Session 出來的差異
Stateless 不一定會比較快喔!! 還是要看你的設計
以上,只是提供你一個不另外開新的hibernate bean的參考
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.20.106
→ sayya2311:但在Beginning Hibernate中,卻提到這種做法的需注意事 04/01 12:56
→ sayya2311:項是 but make sure you don't have to retrieve additi 04/01 12:58
→ sayya2311:onal columns for the entire result set 'later', or 04/01 13:00
→ sayya2311:your optimizations may actually decrease performance 04/01 13:02
→ sayya2311:即然原本的Class還在, 那麼它應該也有被使用到的一天 04/01 13:05
→ sayya2311:有人知道關於"later"的影響的實際例子? 實測結果? 04/01 13:06
→ abola921:咳..我去翻這段出來看了..整段真的就這句later跨某... 04/01 15:34
→ abola921:我也不太能理解文中描述的情況,同請賜教!! 04/01 15:36
推 lookjohn:也就是說BeanASimple 不用特別在mapping Table而單純使用 04/02 21:26
→ lookjohn:一個Bean 來做一個精簡的轉換,感覺這樣也挺省事的 04/02 21:31