christian wrote:
Well, I'd probably use lazy loading in small two-tiered web applications with a ThreadLocal and Interceptor pattern for Session and Transaction management. In all other cases I'd return the correct subgraph from my service layer, even consider DTOs and/or automatic assemblers.
This is a question of application design and there are many best practices but no "you are right I am wrong"-kind of answers for everything.
I really recommend Hibernate in Action or one of our trainings for architectural questions that go beyond regular Hibernate usage. If you search the forum you'll find many discussions, but this stuff is much easier to communicate with a full example (as in the book) or in person.
Thanks, I actually have my Hibernate in Action book right beside me.