如何发挥Hibernate的lazy检索功能的作用?
Hibernate在操作对象关联时可以提供lazy检索的功能,例如Cutomer-->Orders,如果访问Cutomer本身,不需要访问Orders这时候,不需要返回所有和Customer关联的Orders对象。学习了一段实际间Hibernate,我现在越来越不知道该怎么使用这个功能了。
由于在Hibernate下有detached对象可以部分替代DTO,我通过DAO对象返回相应的detached object,但是这些detached对象只能在相应的Session close之后才可以作为detached object返回。这样就出现了矛盾,因为session close之后,lazy功能就不能起作用了。因为调用DAO的客户是否真的要访问Customer关联的Orders对象,DAO本身并不知道,如果在DAO相关代码中使用的lazy功能,而客户端却访问了相关的orders对象,这会抛出异常,因为相应的orders还没有初始化。如果在DAO中显式初始化orders则,lazy检索的意义何在?难道说对每一个DAO里面的find方法都定义多个版本(包括显式初始化orders和使用lazy检索orders的版本),然后客户端只能通过调用不同的版本?
以上是我对Hibernate的lazy检索功能的一点疑问,不知道是我的理解错误,还是使用上方法不当。请各位指点,谢谢!