作者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
1F:→ sayya2311:但在Beginning Hibernate中,却提到这种做法的需注意事 04/01 12:56
2F:→ sayya2311:项是 but make sure you don't have to retrieve additi 04/01 12:58
3F:→ sayya2311:onal columns for the entire result set 'later', or 04/01 13:00
4F:→ sayya2311:your optimizations may actually decrease performance 04/01 13:02
5F:→ sayya2311:即然原本的Class还在, 那麽它应该也有被使用到的一天 04/01 13:05
6F:→ sayya2311:有人知道关於"later"的影响的实际例子? 实测结果? 04/01 13:06
7F:→ abola921:咳..我去翻这段出来看了..整段真的就这句later跨某... 04/01 15:34
8F:→ abola921:我也不太能理解文中描述的情况,同请赐教!! 04/01 15:36
10F:推 lookjohn:也就是说BeanASimple 不用特别在mapping Table而单纯使用 04/02 21:26
11F:→ lookjohn:一个Bean 来做一个精简的转换,感觉这样也挺省事的 04/02 21:31