Eclipselink: The Difference Between Static and Dynamic Weaving

I am using eclipselink 2.6.3 and have the following code:

public Temp getTemp() {
    EntityManager em=emf.createEntityManager();
    String queryString="SELECT a FROM Temp a";
    EntityGraph<Temp> eg = em.createEntityGraph(Temp.class);
    eg.addAttributeNodes("id");
    //eg.addAttributeNodes("name");
    Query query = em.createQuery(queryString);
    query.setHint("javax.persistence.fetchgraph", eg);
    List<Temp> items=query.getResultList();
    em.close();// ENTITYMANAGER IS CLOSED 
    return items.get(0);
}

public void temp(){
    Temp temp=getTemp();
    System.out.println("id:"+temp.getId());
    System.out.println("name:"+temp.getName());
}

Situation 1: When weaving is static ( <property name="eclipselink.weaving" value="static"/>+ de.empulse.eclipselink weaving plugin), and we do temp.getName (), an onemore SQL query is executed and the necessary data is loaded. Despite the fact that we closed the entity manager. I was expecting to get an exception in temp.getName ().

Situation 2: However, when weaving is dynamic ( <property name="eclipselink.weaving" value="true"/>), I get an exception:

java.lang.ClassNotFoundException: org.eclipse.persistence.internal.jpa.EntityManagerImpl not found by com.temp [57]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.temp.Temp._persistence_checkFetched(Temp2.java)
at com.temp.Temp._persistence_get_name(Temp2.java)
at com.temp.Temp.getName(Temp.java:44)

How to explain this difference? This is mistake?

0
source share
1 answer

(), tomcat jetty, , , .

, eclipselink: http://wiki.eclipse.org/EclipseLink/Examples/JPA/Tomcat_Web_Tutorial

JPA
Tomcat Java EE 5 , JPA. ()
- - EclipseLink @EJB bean ( EntityManager)
 - factory @PersistenceContext ,
- Persistence.createEntityManagerFactory(JTA_PU_NAME)

: http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Performance/Weaving/Static_Weaving

0

All Articles