Utilización del intento de acceso WSJPA
El intento de acceso a JPA (Java™ Persistence API) especifica el nivel de aislamiento y el nivel de bloqueo que se utiliza al leer los datos de un origen de datos. El intento de acceso controla el nivel de aislamiento de JDBC (Java Database Connectivity) y si se adquieren bloqueos de lectura, actualización o exclusivos al recuperar datos.
Acerca de esta tarea
- El intento de acceso está disponible para la aplicación en el entorno del servidor Java EE
- El intento de acceso es aplicable a métodos de interfaz de gestor de entidades que no son de consulta. La consulta utiliza la interfaz de sugerencias de consulta con el fin de establecer sus valores de aislamiento y bloqueo de lectura.
- El intento de acceso sólo está disponible para bases de datos DB2.
- El intento de acceso sólo está en vigor cuando se utiliza un gestor de bloqueos pesimista. Añada lo siguiente a la lista de propiedades de unidad de persistencia. <property name="openjpa.LockManager" value="pessimistic"/>
Intento de acceso de bean de entidad de WebSphere EJB 2.x | Intento de acceso JPA | Descripción |
---|---|---|
optimistic | isolation: Read Committed | Los datos se leen pero no se conserva ningún bloqueo. El ID de versión se utiliza en la actualización para asegurar la integridad de los datos. Otras transacciones pueden leer y actualizar los datos. |
lockManager: Optimistic | ||
query Hint: ReadLockMode: READ | ||
pessimistic read | isolation: Repeatable Read | Los datos se leen con bloqueos compartidos. Las demás transacciones que intenten actualizar los datos se bloquean. |
lockManager: Optimistic | ||
query Hint: ReadLockMode: READ | ||
pessimistic update | isolation: Repeatable Read | Los datos se recuperan con un bloqueo de actualización o exclusivo. El resto de grabaciones se bloquean hasta que se realiza la confirmación. Este intento de acceso se puede serializar el acceso de actualización a los datos cuando se producen varias grabaciones. |
lockManager: Pessimistic | ||
query Hint: ReadLockMode: WRITE | ||
pessimistic exclusive | isolation: Serializable | Los datos se recuperan con un bloqueo de actualización o exclusivo. El resto de grabaciones se bloquean hasta que se realiza la confirmación. Este intento de acceso se puede serializar el acceso de actualización a los datos cuando se producen varias grabaciones. |
lockManager: Pessimistic | ||
query Hint: ReadLockMode:WRITE |
- El TaskName se establece de forma automática en el contenedor de EJB cuando una transacción empieza a utilizar una transacción local WebSphere local (transacción no especificada de EJB), una transacción global de JTA en una transacción gestionada por contenedor (CMT) o una transacción global iniciada por el usuario en una transacción gestionada por bean (BMT).
- TaskName se configura manualmente en una aplicación utilizando la API TaskNameAccessor que se proporciona para JPA.
La utilización de nombres de tarea soporta la especificación de intento de acceso en un ámbito de solicitud en lugar de especificarlo en el archivo persistence.xml, que tiene un ámbito de aplicación en todas las entidades. A menudo una consulta se incluye dentro de un método o componente que se utiliza en muchos contextos de transacción distintos. Algunos de estos contextos pueden requerir el intento de bloqueo de actualización y lectura repetible pero otros contextos no.
- Un ámbito de aplicación en el archivo persistence.xml. Estos niveles de aislamiento y tipos de bloqueo de lectura son propiedades especificadas en el archivo persistence.xml. Se aplican a todas las entidades que están definidas en la unidad de persistencia.
- Un ámbito de transacción en el nombre de tarea. Las sugerencias con ámbito de transacción alteran temporalmente los valores de ámbito de aplicación.
- Una instancia de consulta con una sugerencia de consulta. La sugerencia de consulta se puede utilizar para alterar temporalmente el aislamiento y la ReadLockMode de una instancia de consulta concreta. Una sugerencia de consulta altera temporalmente el nivel de aislamiento y los bloqueos de lectura especificados en el ámbito de aplicación o de transacción.
Procedimiento
- Establecimiento de un TaskName mediante la API TaskNameAccessor Esta tarea explica cómo utilizar la API TaskNameAccessor para establecer un TaskName JPA en tiempo de ejecución.
- Especificación de TaskName en una unidad de persistencia JPA Esta tarea explica cómo especificar un TaskName en una unidad de persistencia JPA.