hibernate4 lazy
- 作者: 深深地恶意
- 来源: 51数据库
- 2020-10-14
最好不要把lazy设置成true,那样数据量小的时候尚可以承担负荷的查询,如果数据量在上百上千之后,那么查询效率很底的,因为你每次查询的时候都会把你的所有的查询打开,比如你关联了2个表,那么这2个表的记录就都会被查,这样许多无用的也查出来的.
如果想不报session未关闭的话,那么最好使用左连接,这样就可以有效的防止这个问题了,但是你需要去指定你的对象,或者把对象封装起来也可以比如users是主表,引用了group ,rool
我们在映射文件中都配置好了对象,这样直接查询对象就可以了
string hql="from Users u left join u.group g left join g.rool r";
List list=getHibernateTemplate().find(hql);
可以这样做:
Users users=null;
if(list.size0){
Object[] obj=list.get(0);
users=(Users)obj[0];}return users;
然后在你需要的类里面可以这么调用:
user.getGroup.getrool.getXXXX();
这样可以,或者直接返回list也可以调用!
但是最好不要把lazy设置成true也许表达不好,但是看看应该明白,呵呵!
推荐阅读
