Question: why hibernate returns proxy object?
Answer: Hibernate returns proxies if not all members are resolved, i.e. the object is not complete. ... To use the proxy object just never access a member directly but only via getter, even within member functions. Hibernate magic fills in the member when you get it. This way you never have to expose the object.