Asociación de proveedores de persistencia y orígenes de datos
Las JPA (Java™ Persistence API) especifican el origen de datos subyacentes que utiliza el proveedor de persistencia para acceder a la base de datos.
Acerca de esta tarea
Procedimiento
- Especifique de forma explícita el nombre JNDI (Java Naming and Directory Interface) en el archivo persistence.xml y la aplicación hará referencia directamente al origen de datos. Para pasar a otro
origen de datos es necesario actualizar el archivo persistence.xml.
JPA tiene dos patrones transacciones para acceder a un origen de datos:
- El patrón de recursos Java Transaction API (JTA) depende de transacciones globales. El patrón de recursos JTA se utiliza generalmente dentro del ámbito de una sesión de Enterprise JavaBeans (EJB). Esto soporta el bean de sesión para controlar los contextos de transacción y seguridad mientras que JPA gestiona las correlaciones de persistencia. En este caso, la aplicación no utiliza la interfaz EntityTransaction sino que se basa en el EntityManager que figura en la transacción global cuando se accede al mismo.
- El patrón de recurso no JTA se utiliza al trabajar con un solo recurso en la ausencia de transacciones globales. El patrón de recurso que no es de
JTA se utiliza generalmente dentro del ámbito de una aplicación Web o un cliente de
aplicaciones. La aplicación controla la transacción con el origen de datos mediante la
interfaz
EntityTransaction.Para poder utilizar el elemento <non-jta-data-source> para un origen de datos no transaccional. Los orígenes de datos que se configuran para el servidor de aplicaciones no funcionarán como un <non-jta-data-source>, debido a que todos los orígenes de datos configurados por el servidor de aplicaciones se listan automáticamente en el contexto de transacción actual. Para impedir que se listen automáticamente, puede añadir una propiedad personalizada del origen de datos adicional nonTransactionalDataSource=true:
- Seleccione Recursos > JDBC > Orígenes de datos.
- Seleccione el nombre del origen de datos que desea configurar.
- Seleccione Propiedades del origen de datos de WebSphere Application Server en la cabecera Propiedades adicionales.
- Seleccione Origen de datos no transaccional.
- Pulse Aceptar.
Avoid trouble: La especificación JPA da por supuesto que las conexiones se obtienen con un nivel de aislamiento que no mantiene bloqueos a largo plazo en la base de datos como, por ejemplo, READ_COMMITTED. Esto podría no coincidir con el nivel de aislamiento predeterminado WebSphere Application Server, que es REPEATABLE_READ para la mayoría de las bases de datos. Puede encontrar el nivel que se utiliza para la base de datos leyendo el tema, Requisitos para definir el nivel de aislamiento.
Si el valor predeterminado para la base de datos no es READ_COMMITTED, puede cambiar el valor predeterminado añadiendo una propiedad personalizada de origen de datos webSphereDefaultIsolationLevel adicional.Si el nivel de aislamiento está definido en un valor que mantiene bloqueos de lectura de largo plazo, configure el proveedor JPA para utilizar el bloqueo pesimista en lugar del bloqueo optimista predeterminado.Tabla 1. Valores del nivel de aislamiento. Esta tabla muestra los valores de nivel de aislamiento válidos. Value Nivel de aislamiento 1 READ_UNCOMMITTED 2 READ_COMMITTED (de forma predeterminada JPA) 4 REPEATABLE_READ (valor predeterminado WebSphere Application Server) 8 SERIALIZABLE Para EclipseLink, utilice la propiedad siguiente en el archivo persistence.xml:<property name=”eclipselink.pessimistic-lock” value=”Lock”/>
Para OpenJPA, utilice las propiedades siguientes en el archivo persistence.xml:gotcha<property name="openjpa.Optimistic" value="false"/> <property name="openjpa.LockManager" value=pessimistic"/>
La especificación JPA establece que los orígenes de datos definidos en los elementos <jta-data-source> y <non-jta-data-source> de una unidad de persistencia se registren en el espacio de nombres JNDI.
Por ejemplo, el archivo persistence.xml debe contener una entrada como la siguiente:<jta-data-source>jdbc/DataSourceJNDI</jta-data-source>
- La solución JPA para WebSphere Application Server amplía la implementación de origen de datos JNDI para permitirle hacer referencia a orígenes de datos en el espacio de nombres de componente. En el archivo del descriptor de despliegue del módulo EJB o del módulo web, se trata del elemento <resource-ref>. Puede
añadir como prefijo al origen de datos java:comp/env/ de forma que la aplicación haga referencia indirectamente al origen de
datos utilizando el nombre JNDI local. En esta asociación, la aplicación no requiere actualizaciones, para utilizar otro origen de datos debe modificar <resource-ref>. Consulte el ejemplo siguiente:
<jta-data-source>java:comp/env/jdbc/DataSourceJNDI</jta-data-source>
Qué hacer a continuación
Para obtener información acerca de cómo configurar los orígenes de datos, consulte el tema sobre cómo crear y configurar un origen de datos.
Conceptos relacionados:


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tejb_defjpadatasource
File name: tejb_defjpadatasource.html