El proyecto en el que estoy trabajando utiliza el acceso directo a datos JDBC en todo su esplendor y no utiliza ninguna transacción. Siento que es importante usar las transacciones y simplificar la forma en que se escriben los métodos de acceso a los datos, especialmente con algunos cambios que se realizan actualmente. El proyecto ha existido por bastante tiempo y no es adecuado para un marco ORM. También usa muchos Singleton (ugh) y desenredarlo para que pueda usar la inyección de dependencia sería una buena cantidad de trabajo y no creo que pueda convencer a nadie de que deberíamos hacer eso ahora.¿Cómo hacer transacciones simples Spring JDBC fuera del contenedor de IoC?
Me gusta la interfaz de Spring JDBC, específicamente a través de su SimpleJdbcTemplate
. Mi pregunta es acerca de cómo habilitar algunas transacciones simples (por solicitud de servlet) para esto, sin tener que configurar nada programáticamente en cada método de acceso a datos o usando el contenedor Spring IoC o AOP. He jugado con mi propia arquitectura que termina con una interfaz similar a SimpleJdbcTemplate
y puedo usar una única conexión y transacción de solicitud local cuando las llamadas se realizan en el contexto de una solicitud (a través de ServletRequestListener
con ThreadLocal
) Parece funcionar bien, pero creo que sería preferible usar una buena biblioteca externa como Spring JDBC.
¿Alguien tiene alguna experiencia con esto?
Esto no funciona exactamente como estaba pensando, ya que requeriría programar las llamadas mediante el uso de TransactionTemplate en un nivel de aplicación más alto en lugar de simplemente hacer que cada llamada al JdbcTemplate use una transacción de solicitud local si es posible. Debería funcionar bien sin embargo. – ColinD