Weaving is a technique of manipulating the byte-code of compiled Java classes.
EclipseLink uses weaving to enhance Plain Old Java Object (POJO) classes and JPA entities with many features such lazy loading, change tracking, fetch groups, and internal optimizations.
In a Java SE environment weaving is not enabled by default. This can affect LAZY One-To-One, Many-To-One and Basic relationships. It also has a major effect on performance and disable attribute change tracking.
To enable weaving in Java SE, the EclipseLink agent must be used when starting the Java VM.
Spring could also be used to allow JPA weaving in Java SE. See
http://wiki.eclipse.org/EclipseLink/Examples/JPA/JPASpring for more information.
Static weaving can also be used, by including the following persistence property,
<property name="eclipselink.weaving" value="static"/>
See "weaving" in Java Persistence API (JPA) Extensions Reference for Oracle TopLink for more information.
In a Java EE environment weaving is enabled by default (on any Java EE 5 or greater fully compliant application server, such as WebLogic, WebSphere, and Glassfish. JBoss does not allow weaving so you must use static weaving or Spring).
To disable weaving the weaving persistence unit property can be used,
<property name="eclipselink.weaving" value="false">
For more information on weaving see "weaving" in Java Persistence API (JPA) Extensions Reference for Oracle TopLink.