当初项目开始的时候是Hibernate2.0,后来升级到Hibernate3.0,数据库设计的时候有很多关联关系,起初用Hibernate的时候取道主表的结果集后,连带从表的结果集一起能得到,用起来感觉很爽,一个Hql就能得到很多,再也不需要用以前的联合查询,感觉真的解脱了,伴随升级到Hibernate3.0为了达成这一效果就设置了lazy="false"。
起初没有发觉,随着项目的慢慢收尾性能问题突现,以前的连带查询的小方便竟然成了最大的性能问题,一条简单的数据查询,伴随的竟然是10多条甚至更多的sql查询出现。
抛除数据库以及系统设计的问题(现在已经没法改变了),究竟是我Hibernate使用不当(如果是,情尽快指正,不胜感激),还是Hibernate本身对设计要求比较高呢?
比方说三个对象A,B,C。A和B的关系是one-to-many、B和C的关系也是one-to-many
1、public class A() {
private B b;
}
2、public class B() {
private C c;
}
如果lazy为false,则一条简单的A查询就会连带出现很多的查询把所关联的所有B和C都查了。
设置lazy为false的一点好处是:查A的时候容易得到B、查B的时候容易得到A,而现在看来这种简单大大浪费的性能。我有时只想得到A的简单数据时也连带得到了B和C。