maggio 17th, 2009

Loading ...
OpenJPA può utilizzare un enhancer per consentire performance ottimali a runtime, un lazy loading flessibile e un dirty tracking immediato.
L’enhancer è un’utilità che aggiunge del codice a quello delle nostre entità. Successivamente l’enancher post-processa il bytecode prodotto dal compilatore Java aggiungendo campi e metodi utili ad implementare le caratteristiche di persistenza. Le modifiche al bytecode preservano i numeri di linea nelle stack traces; quindi, ad esempio, se il codice solleva un’eccezione alla linea X nel metodo getX allora lo stack trace indicherà la sollevazione dell’errore alla linea X nel metodo pcgetX (OpenJPA aggiunge il prefisso ‘pc’ ai campi e ai metodi negli stack trace). Questo rende OpenJPA perfettamente compatibile con i Java debuggers.
Mi è capitato di utilizzare OpenJPA in un’applicazione standalone e di avere bisogno delle virtù dell’enancher. Per motivi particolari, ho avuto la necessità di attivare l’enancher a build time (è possibile attivarlo anche a runtime con una semplice opzione nella riga di comando — Apache OpenJPA User’s Guide — 5.2.3. Enhancing at Runtime ).
Ho usato un sistema semplice semplice che consiste di 2 fasi:
- copiare il jar di openjpa e tutte le librerie che esso utilizza nella cartella netbeans/java1/ant/lib
- aggiungere il codice seguente al file build.xml del progetto in sviluppo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <target name="openjpa-enhance">
<echo message="==========================="/>
<echo message="OpenJPA: Entities Enhancing at Build Time"/>
<taskdef name="openjpac"
classname="org.apache.openjpa.ant.PCEnhancerTask"/>
<!-- invoke enhancer on all .java files below the model directory -->
<openjpac>
<config propertiesFile=
"${basedir}/src/META-INF/persistence.xml"/>
<classpath>
<pathelement location="${basedir}/build/classes"/>
<pathelement location="${basedir}/src"/>
<pathelement path="${java.class.path}"/>
</classpath>
</openjpac>
<echo message="==========================="/>
</target> |
Tags: Java, JPA, NetBeans, OpenJPA
Invia ad un amico
Stampa
Posted in Java, NetBeans |
No Comments »