Desarrollo de aplicaciones JPA 2.x para un entorno Java EE

Los contenedores del servidor de aplicaciones puede proporcionar muchas de las funciones necesarias para la JPA (Java™ Persistence API) en un entorno Java EE (Java Enterprise Edition). El servidor de aplicaciones también proporciona herramientas de mandatos JPA para ayudarle a desarrollar aplicaciones en un entorno Java EE.

Acerca de esta tarea

Atención: Cuando utilice estas herramientas de mandatos JPA, ejecútelas desde el directorio <raíz_perfil>/bin, en lugar de desde el directorio raíz_servidor_aplicaciones/bin para asegurarse de que tiene la versión más reciente de los mandatos para su 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 la compilación en interfaces JPA 2.1. Para compilar en interfaces JPA 2.0, especifique el com.ibm.ws.jpa-2.0.thinclient_9.0.jar. 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ónd el servidor está en el directorio ${raíz_servidor_apl}/runtimes.

Importante: Las aplicaciones JPA requieren técnicas de configuración distintas de las de las aplicaciones que utilizan la persistencia gestionada por contenedor (CMP) o la persistencia gestionada por beans (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 para asegurarse de que las aplicaciones puedan ejecutarse en un entorno Java EE.

El contenedor da soporte a todas las inclusiones necesarias para garantizar que las aplicaciones se ejecutan en el entorno Java EE. Por ejemplo, el contenedor puede incluir @PersistenceUnit y @PersistenceContext para las aplicaciones.

Procedimiento

  1. Genere las clases de entidades. Están son entidades POJO (Plain Old Java Object). Según el modelo de desarrollo, puede utilizar algunas o todas las herramientas JPA:
    • Correlación descendente: con las definiciones de entidades y las correlaciones relacionales de objetos comienza a partir de cero y luego deriva los esquemas de base de datos a partir de los datos. Si utiliza este método, con toda probabilidad, su objetivo será crear la arquitectura del modelo de objeto y luego escribir las clases de entidades. Estas clases de entidades le llevarán finalmente a crear el modelo de base de datos. Si está utilizando una correlación descendente del modelo de objeto con el modelo relacional, desarrolle las clases de entidad y, después, utilice las funciones del proveedor JPA para generar las tablas de base de datos que se basan en las clases de entidad. La herramienta wsmapping ayuda con este enfoque cuando se utiliza OpenJPA como el proveedor de persistencia.
    • Correlación ascendente: comienza por el modelo de datos, que son los esquemas de bases de datos y luego asciende hasta las clases de entidades. La herramienta wsreversemapping ayuda con este enfoque cuando se utiliza OpenJPA como el proveedor de persistencia.
    • Correlación de encuentro a medio camino: es probablemente el modelo de desarrollo más común. Tiene una combinación del modelo de datos y del modelo de objeto parcialmente completa. Dependiendo de los objetivos y de los requisitos, tendrá que negociar las relaciones y resolver las diferencias. Ambas herramientas, wsmapping y wsreversemapping, ayudan con este enfoque cuando se utiliza OpenJPA como el proveedor de persistencia.
    La solución JPA para el servidor de aplicaciones proporciona varias herramientas que le ayudarán a desarrollar aplicaciones JPA. Al combinar estas herramientas con IBM® Rational Application Developer se proporciona un sólido entorno de desarrollo para las aplicaciones Java EE o Java SE. Rational Application Developer incluye herramientas de la GUI para insertar anotaciones, un editor de archivos persistence.xml personalizado, un explorador de bases de datos y otras funciones. Otra alternativa es el proyecto Eclipse Dali. Para obtener más información sobre Rational Application Developer o el plug-in de Eclipse Dali, visite sus respectivos sitios web.
  2. Compile las clases de entidad.

    Compile las entidades como lo haría con cualquier clase Java, a menos que esté utilizando la API Criteria. Si está utilizando la API Criteria, también debe generar las clases del metamodelo de la API Criteria.

    Los siguientes son ejemplos de cómo utilizar esta opción.

    Mediante EclipseLink, proporcione los argumentos siguientes con el mandato javac:
    -processor
    org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor
    -Aeclipselink.persistencexml= persistence.xml_location 
    raíz_servidor_apl/java/bin/javac
    -classpath
    raíz_servidor_apl/runtimes/com.ibm.ws.jpa-2.1.thinclient_9.0.0.jar
    -processor
    org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor
    -Aeclipselink.persistencexml=app_location/src/META-INF/persistence.xml
    mypackage\MyEntity.java 
    Mediante OpenJPA o WSJPA, proporcione los argumentos siguientes con el mandato javac:
    -Aopenjpa.metamodel=true
    raíz_servidor_apl/java/bin/javac
    -Aopenjpa.metamodel=true
    -classpath
    raíz_servidor_apl/runtimes/com.ibm.ws.jpa-2.0.thinclient_9.0.0.jar
    mypackage/MyEntity.java
  3. Amplíe las clases de entidad utilizando la herramienta de ampliador de JPA, eclenhancer para EclipseLink y wsenhancer para OpenJPA. Un ampliador es una herramienta que añade código de bytes de integración específico de proveedor a las clases persistentes después de haberlas escrito. La herramienta de ampliación realiza un proceso posterior en el código de bytes que genera el compilador Java y añade los campos y métodos necesarios para implementar las características de persistencia. Aunque el proveedor de persistencia del servidor de aplicaciones puede ampliar automáticamente las entidades durante el tiempo de ejecución, obtiene un mejor rendimiento si puede ampliar las entidades cuando se crea la aplicación. La aplicación no intentará ampliar las entidades que ya se han ampliado.

    Si desea ejemplos sobre cómo utilizar la herramienta eclenhancer, consulte el tema del mandato eclenhancer. Si desea ejemplos sobre cómo utilizar la herramienta wsenhancer, consulte el tema del mandato wsenhancer.

  4. Opcional: Si no está utilizando el modelo de desarrollo para la correlación ascendente, genere o actualice las tablas de base de datos automáticamente o utilizando la herramienta eclenhancer o wsmapping.
    • De forma predeterminada, la correlación de objetos y relacional no se produce automáticamente, pero puede configurar el servidor de aplicaciones para que proporcione dicha correlación con la propiedad eclipselink.ddl-generation para EclipseLink, o la propiedad openjpa.jdbc.SynchronizeMappings para OpenJPA. Estas propiedades pueden acelerar el desarrollo garantizando automáticamente que las tablas de base de datos coinciden con el modelo de objeto. Para habilitar la correlación automática, incluya la línea siguiente en el archivo persistence.xml:
      Para EclipseLink:
      <property name="eclipselink.ddl-generation" value =“create-tables”/> 
      Para OpenJPA:
      <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
      Estándar JPA 2.1:
      <property name="javax.persistence.schema-generation.database.action" value="create"/>  
      Avoid trouble Avoid trouble: Para habilitar la correlación relacional de objetos automática en tiempo de ejecución, todas las clases persistentes deben enumerarse en el archivo .class de Java, en el archivo de correlación y en los elementos del archivo JAR (Java Archive) en formato XML.gotcha
    • Para actualizar o generar manualmente las tablas de base de datos, ejecute la herramienta de correlación JPA para el servidor de aplicaciones desde la línea de mandatos para crear las tablas en la base de datos. Para ver ejemplos sobre cómo ejecutar la herramienta eclenhancer, consulte el tema del mandato eclenhancer. Si desea ejemplos sobre cómo utilizar la herramienta wsmapping, consulte el tema del mandato wsmapping.
  5. Opcional: Si está utilizando OpenJPA y DB2 y desea utilizar el lenguaje de consulta estructurado (SQL) estático, ejecute el mandato wsdbgen. Para utilizar el mandato wsdbgen, debe tener instalado IBM Optim pureQuery Run time. El mandato wsdbgen crea el archivo persistence_unit_name.pdqxml en el mismo directorio META-INF donde se encuentra el archivo persistence.xml. Si tiene varias unidades de persistencia, el mandato wsdbgen debe ejecutarse para cada unidad de persistencia.

    Cuando una aplicación hace referencia a varios archivos pdqxml, utilice la utilidad Merge para combinarlos en un único archivo pdqxml. Especifique el archivo pdqxml combinado como la propiedad pureQueryXml de pdqProperties. Consulte la documentación sobre el programa de utilidad de fusión en el Information Center de IBM Integrated Data Management.

    Avoid trouble Avoid trouble: Las aplicaciones que implementan la JPA y que están configuradas para ejecutar SQL estático pueden generar varias excepciones. Estas excepciones podrían producirse con el mandato wsdbgen, que se puede utilizar para preparar la aplicación, o cuando ésta se ejecuta y llama a un método JPA. Para solucionar este problema, siga estos pasos:
    1. Instale los arreglos temporales del programa, PTF, para el controlador JDBC de iSeries V5R4. Instale los números de PTF SI32561 y SI32562. Para buscar los PTF, vaya al sitio web de IBM System i Support: PTF Cover Letters.
    2. Si utiliza DB2 Universal Database for iSeries V6R1 o V5R3, visite el sitio web de arreglos para el release adecuado.
    3. Instale el nivel necesario de pureQuery, que es la versión 1.3.100 o posterior. Para obtener más información, consulte el sitio web de IBM Optim pureQuery Runtime. Instale los controladores JCC más recientes, que es la versión 3.52.95 o posterior, con el arreglo APAR PK65069. Los controladores JCC más recientes forman parte del paquete de software IBM DB2.
    4. Para DB2 en un servidor z/OS, instale el PTF UK39204 para el controlador alternativo de la versión 8 o el PTF UK39205 para la versión 9 e instale el arreglo para APAR PK67706.
    gotcha

    Para obtener ejemplos de cómo ejecutar este mandato, consulte el tema sobre el mandato wsdbgen .

  6. Opcional: Si está utilizando OpenJPA y la identidad gestionda por aplicación, genere una clase de identidad gestionada por aplicación con la herramienta wsappid. Cuando utiliza una identidad gestionada por la aplicación, uno o varios campos deben ser un campo de identidad. Utilice una clase de identidad si su identidad tiene varios campos de identidad y al menos uno de los campos está relacionado con otra entidad. La herramienta de identidad gestionada por la aplicación genera código Java que utiliza la clase de identidad para cualquier tipo persistente que implemente la identidad gestionada por la aplicación.

    Para obtener ejemplos de cómo utilizar la herramienta wsappid, consulte el tema sobre el mandato wsappid.

Ejemplo

El siguiente es un archivo persistence.xml de ejemplo:
<?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="JTA">
        <jta-data-source>jdbc/DataSourceJNDI</jta-data-source>
        <!-- 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=”eclipselink.ddl-generation”
                       value=”create-tables”/>
			
        </properties>

     </persistence-unit>
</persistence>

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_jpadeveefepplus
File name: tejb_jpadeveefepplus.html