Parece haber opiniones muy diferentes sobre el uso de transacciones para leer desde una base de datos.¿Transacciones para acceso DB de solo lectura?
Presupuesto de la DeveloperWorks artículo Transaction strategies: Models and strategies overview:
¿Por qué necesitaría una transacción si solo leyendo los datos? La respuesta es que no. Inicio de una transacción para realizar una lectura única operación se suma a los gastos generales de la rosca procesamiento y puede causar compartida bloqueos de lectura en la base de datos (dependiendo de qué tipo de base de datos que está utilizando y lo que el nivel de aislamiento se establece a).
Como opinión contraria no es la siguiente cita de la documentación de Hibernate Non-transactional data access and the auto-commit mode
Nuestra recomendación es no utilizar el modo confirmación automática en una aplicación, y aplicar sólo lectura sólo cuando las transacciones hay un beneficio obvio de rendimiento o cuando los cambios futuros del código son altamente improbables. Siempre prefiera transacciones ACID regulares al grupo sus operaciones de acceso a datos, independientemente de si lee o escribe datos.
También hay un debate similar en la lista de correo de EclipseLink here.
Entonces, ¿dónde está la verdad? ¿Las transacciones para leer las mejores prácticas son o no? Si ambas son soluciones viables, ¿cuáles son los criterios para usar las transacciones?
Por lo que puedo ver, solo hace la diferencia si el nivel de aislamiento es más alto que "leer confirmado". ¿Es esto correcto?
¿Cuáles son las experiencias y recomendaciones?