File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes EJB Certification (SCBCD/OCPJBCD) and the fly likes IdClass & lazy initialization Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Make it so: Java DB Connections & Transactions this week in the JDBC forum!
JavaRanch » Java Forums » Certification » EJB Certification (SCBCD/OCPJBCD)
Bookmark "IdClass & lazy initialization" Watch "IdClass & lazy initialization" New topic

IdClass & lazy initialization

Mirko Bonasorte
Ranch Hand

Joined: May 14, 2007
Posts: 244

I have:
1. A persistent object with an IdClass as key
2. A stateless session bean that gives a method that returns my persistent object using the 'getReference()' method
3. A servlet that invokes the stateless session bean

I'm using J5EE+JBoss 4.2.0.

When I get my object in the servlet, if I try to invoke the getter of any of the 'id' fields, I get an error about the lacking of the session (Hibernate session).
I noticed that:
1. If I use the 'find' method, this problem does not occur
2. If I use the EmbeddedId key for my persistent object, this problem does not occur

Is this normal? What's wrong with the use of my persistent object?

Considering that it seems that, outside the session bean, all the lazy fields not yet loaded are unaccessible, it's very risky to return a persistent object from a session bean. Is it true? How should I approach such a situation? Returning a lightweight version of the same persistent object?

Thanks in advances!

SCJP<br />SCWCD 1.4 Upgrade (Remember: me stupid)<br />SCWCD 1.4<br /><a href="" target="_blank" rel="nofollow">SCBCD 5.0</a><br /><a href="" target="_blank" rel="nofollow">SCBCD 5.0 mock exam</a> <br /> <br />SCEA 5 Part1: Preparing...
Mirko Bonasorte
Ranch Hand

Joined: May 14, 2007
Posts: 244
in general, what can I read from a persistent object that is returned by a session bean?

Thanks in advances
Satya Maheshwari
Ranch Hand

Joined: Jan 01, 2007
Posts: 368
Quoting from the spec:

I think you may:
1.Consider using find() instead of getReference() or
2.Use getReference() and Consider explicitely fetching all the entity attributes before it is detached as the container might have not loaded them due to lazy loading.

Thanks and Regards
I agree. Here's the link:
subject: IdClass & lazy initialization
It's not a secret anymore!