1 - In EclipseLink the lazy fields will be null in the debugging until accessed. You should see mirror fields in the object that were weaved for every lazy field.
Ensure you are using the EclipseLink agent to enable dynamic weaving, or running the
ant task on your jar to enable static weaving.
If you have not enabled weaving, then everything will be eager.
2 - I would recommend making everything lazy. If a specific use case requires eager, that change it as needed.
For performance in a specific use case you can use join fetching or batch fetching.
EclipseLink also supports fetch groups, and load groups to configure what is loaded/fetch for a specific query.
3 - Lazy is implemented differently in different JPA providers. EclipseLink using byte code weaving either dynamic through and agent, or static. Other providers use other mechanisms, such as byte code generated subclass proxies.