Desarrollo de aplicaciones JPA 2.x para un entorno Java SE
Prepare las aplicaciones de persistencia para probarlas fuera del contenedor del servidor de aplicaciones en un entorno Java™ SE.
Acerca de esta tarea
Atención: Al utilizar estas herramientas de mandato JPA, ejecútelas desde el directorioraíz_perfil/bin, en lugar del directorio raíz_servidor_aplic/bin para asegurarse de que tiene la última versión de los mandatos para el nivel de release.
Para esta tarea, debe especificar el archivo autónomo com.ibm.ws.jpa-2.1.thinclient_9.0.jar de archivado Java (JAR) en la classpath para su compilación con interfaces JPA 2.1. Para compilar con interfaces JPA 2.0, especifique el com.ibm.ws.jpa-2.0.thinclient_9.0.jar en la vía de acceso de clase. Este archivo JAR autónomo está disponible en las imágenes de instalación. La ubicación de estos archivos en la imagen de instalación del servidor está en el directorio ${raíz_servidor_apl}/runtimes/.
Importante: Las aplicaciones JPA (Java Persistence API) requieren
diferentes técnicas de configuración de las aplicaciones que utilizan la persistencia gestionada por
contenedor (CMP) o la persistencia gestionada por bean (BMP). No siguen las técnicas de despliegue típicas asociadas a las aplicaciones que
implementan CMP o BMP. En las aplicaciones JPA, debe definir una unidad de persistencia y
configurar las propiedades adecuadas en el archivo persistence.xml para
asegurarse de que las aplicaciones puedan ejecutarse en un entorno Java SE.
Existen algunas consideraciones para ejecutar las aplicaciones JPA en un entorno Java
SE:
- La inserción de recursos no está disponible. Debe configurar estos servicios de forma específica o programada.
- El ciclo de vida de EntityManagerFactory y EntityManager lo gestiona la aplicación. Las aplicaciones controlan la creación, manipulación y supresión de estas construcciones de forma programada.
Procedimiento
Ejemplo
A continuación se detalla un archivo persistence.xml de ejemplo para el entorno Java SE:
Para EclipseLink:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="TheWildZooPU" transaction-type="RESOURCE_LOCAL">
<!-- archivo de correlación adicional a orm.xml>
<mapping-file>META-INF/JPAorm.xml</mapping-file>
<class>com.company.bean.jpa.PersistebleObjectImpl</class>
<class>com.company.bean.jpa.Animal</class>
<class>com.company.bean.jpa.Dog</class>
<class>com.company.bean.jpa.Cat</class>
<properties>
<property name="javax.persistence.jdbc.driver"
value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="javax.persistence.jdbc.url"
value="jdbc:derby:target/database/jpa-test-database;create=true" />
<property name="javax.persistence.schema-generation.database.action"
value="create" />
<property name="javax.persistence.jdbc.user"
value="user" />
<property name="javax.persistence.jdbc.password"
value="password"/>
</properties>
</persistence-unit>
</persistence>
Para OpenJPA:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="TheWildZooPU" transaction-type="RESOURCE_LOCAL">
<!-- archivo de correlación adicional a orm.xml>
<mapping-file>META-INF/JPAorm.xml</mapping-file>
<class>com.company.bean.jpa.PersistebleObjectImpl</class>
<class>com.company.bean.jpa.Animal</class>
<class>com.company.bean.jpa.Dog</class>
<class>com.company.bean.jpa.Cat</class>
<properties>
<property name="openjpa.ConnectionDriverName"
value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="openjpa.ConnectionURL"
value="jdbc:derby:target/database/jpa-test-database;create=true" />
<property name="openjpa.Log"
value="DefaultLevel=INFO,SQL=TRACE,File=./dist/jpaEnhancerLog.log,Runtime=INFO,Tool=INFO"
/>
<property name="openjpa.ConnectionFactoryProperties"
value="PrettyPrint=true, PrettyPrintLineLength=72" />
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)" />
<property name="openjpa.ConnectionUserName"
value="user" />
<property name="openjpa.ConnectionPassword"
value="password"/>
</properties>
</persistence-unit>
</persistence>