In this blog you will see:
* Understanding the problem, Why does LazyInitializationException happen?
* Load collection by annotation
* Load collection by Open Session in View (Transaction in View)
* Load collection by Stateful EJB with PersistenceContextType.EXTENDED
* Load collection by Join Query
* EclipseLink and lazy collection initialization
Note that EclipseLink does not have this issue (at all), and it has nothing to do with EAGER. EclipseLink supports LAZY in JEE and JSE, for JSE you must use either dynamic weaving using an agent, or static weaving.
The reason EclipseLink does not have this issue is that when you access a LAZY relationship outside of the transaction, or after the EntityManager has been closed, EclipseLink just acquires a new connection from its connection pool to read the related objects.
The only time you will have this issue with EclipseLink is when you serialize the object, then the LAZY will be dead and you will get an error. In EclipseLink you can use JOIN FETCH, fetch groups, or load groups to resolve the issue.