看板 java 關於我們 聯絡資訊
※ 引述《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
abola921:http://ppt.cc/eiZF (google books 提供的片段) 04/01 15:41
lookjohn:也就是說BeanASimple 不用特別在mapping Table而單純使用 04/02 21:26
lookjohn:一個Bean 來做一個精簡的轉換,感覺這樣也挺省事的 04/02 21:31