Acabo de querer sus opiniones de expertos sobre gestión de transacciones declarativas para Spring. Aquí está mi configuración:Spring - Transaction Readonly
- capa DAO es viejo y simple JDBC utilizando Spring JdbcTemplate (n Hibernate, etc)
- capa de servicio es POJO con transacciones declarativas de la siguiente manera -
save*, readonly = false, rollback for Throwable
cosas funcionan bien con encima de la configuración. Sin embargo, cuando digo get*, readonly = true
, veo errores en mi archivo de registro que dicen Database connection cannot be marked as readonly
. Esto sucede para todos los métodos get * en la capa de servicio.
Ahora mis preguntas son:
A. ¿Hay que establecer get*
como de sólo lectura? Todos mis métodos get*
son operaciones de lectura pura DB. No deseo ejecutarlos en ningún contexto de transacción. ¿Qué tan grave es el error anterior?
B. Cuando elimino la configuración get*
, no veo los errores. Además, todas mis operaciones simples get*
se realizan sin transacciones. ¿Es este el camino a seguir?
C. ¿Por qué alguien querría tener métodos transaccionales donde readonly = true
? ¿Hay algún significado práctico de esta configuración?
¡Gracias! Como siempre, ¡sus respuestas son muy apreciadas!
Gracias Bozho! Claro como el día. Supongo que eliminaré la configuración de get * porque estoy usando JDBC normal. – AAK
Sin una transacción de solo lectura, también se abre a la temida 'org.hibernate.LazyInitializationException'. – HDave
De qué manera puedo evitar org.hibernate.LazyInitializationException al demandar a waffle authntication manager. –