在hibernate中 需要全部进行初始化?如果lazy=true的话

03-09-05 浆糊
Human和Role是多对多的关系。当我find所有的Human的时候,得到的是一个List,如果lazy是true的话,我是否要对这个List中所有的Human.getRoles()进行初始化?

问题还有,Human.getRoles()中每一个Role中有一个getHumans(),是不是也要初始化啊,如果是的,那么好像陷入了一个漩涡了。。。

如果是lazy=false当然都没有什么问题,但是我做了简单的测试发现速度太慢了。

yehs220
2003-09-05 13:18
>如果lazy是true的话,我是否要对这个List中所有的Human.getRoles()进行初始化?<

当你调用human.getRoles()就自动初始化了。

>如果是lazy=false当然都没有什么问题,但是我做了简单的测试发现速度太慢了<

不太明白你的意思。

lazy=false和lazy=true只是初始化的时机不同而已,不影响初始化的方法。

浆糊
2003-09-05 13:43
如果lazy=true的话,你使用human.getRoles()的话,一定要在session.close()之前Hibernate.initialize(human.getRoles());不然会出现异常的。如果是false的话,则不需要。

yehs220
2003-09-05 14:04
那只需要保证做完所有处理之后再session.close(),

比如在web应用中用filter来close session。

猜你喜欢