transaccionales transaccional relacional ejemplos desventajas datos java-ee jboss datasource

java-ee - relacional - base de datos transaccionales ejemplos



¿Cuáles son ejemplos de fuentes de datos no transaccionales? (2)

En la documentación de JBoss existe la posibilidad de declarar <no-tx-datasource> que indica:

no-tx-datasource : este elemento se utiliza para especificar la configuración del servicio (org.jboss.resource.connectionmanager) NoTxConnectionManager. NoTxConnectionManager es un administrador de conexión JCA sin soporte de transacciones.

Tengo curiosidad por saber qué se puede conectar con ese tipo de fuente de datos. Ldap? ¿Qué son casos prácticos de uso o ejemplos de código abierto de este tipo de configuración?


Acceder a una base de datos de solo lectura es el caso de uso más básico en el que puedo pensar. Otra sería una aplicación que administra el estado de la transacción en sí. Y otra si desea utilizar una conexión que no participará en una transacción JTA global. El último ocurre en Quartz (ver JobStoreCMT ).

Pero, mientras buscaba en Google (¡esta es una buena pregunta!), Encontré más inspiración en la sección Uso de las conexiones no transaccionales de la documentación del servidor de aplicaciones de Sun:

La principal ventaja de utilizar conexiones no transaccionales es que se evitan los costos indirectos incurridos al enlistar y excluir conexiones en contextos de transacción. Sin embargo, use tales conexiones cuidadosamente. Por ejemplo, si se utiliza una conexión no transaccional para consultar la base de datos mientras una transacción está en progreso que modifica la base de datos, la consulta recupera los datos no modificados en la base de datos. Esto se debe a que la transacción en curso no se ha comprometido. Para otro ejemplo, si una conexión no transaccional modifica la base de datos y una transacción que se está ejecutando simultáneamente se retrotrae, los cambios realizados por la conexión no transaccional no se revierten.

Este es un caso típico de uso para una conexión no transaccional: un componente que actualiza una base de datos en un contexto de transacción que abarca varias iteraciones de un bucle puede actualizar los datos en caché utilizando una conexión no transaccional para leer datos antes de que la transacción se comprometa.

Interesante...


No todos los dataSources son tx, un DataSource también puede representar un archivo en el disco.