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

Para un proveedor de persistencia de JPA en el servidor de aplicaciones, la aplicación puede especificar el aislamiento y la ReadLockMode según un TaskName. El TaskName proporciona un mejor control sobre la aplicación de estas características. La aplicación define un conjunto de tipos de entidad y el intento de acceso correspondiente para cada TaskName definido en una unidad de persistencia.
Nota: El intento de acceso JPA es una extensión de JPA for the WebSphere (WSJPA) de OpenJPA.
Restricción:
  • 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"/>
Tabla 1. Propiedades y descripciones de intento de acceso. En la tabla siguiente se compara el intento de acceso de bean de entidad Enterprise JavaBeans (EJB) 2.x con las propiedades de intento de acceso JPA:
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
Se establece un TaskName en un contexto de transacción mediante una de las acciones siguientes:
  • 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.

El nivel de aislamiento y los bloqueos de lectura se pueden especificar en:
  • 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

  1. 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.
  2. Especificación de TaskName en una unidad de persistencia JPA Esta tarea explica cómo especificar un TaskName en una unidad de persistencia JPA.

Qué hacer a continuación

Para obtener más información acerca del intento de acceso, consulte el tema Servicio de intento de acceso.

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_accessintentjpa
File name: tejb_accessintentjpa.html