¿Cuál es la "mejor" manera de hacer transacciones distribuidas en múltiples bases de datos utilizando Spring e Hibernate?
Tengo una aplicación, más como una utilidad, que se encuentra en un rincón y actualiza dos bases de datos diferentes periódicamente.
Es una pequeña aplicación independiente que se ha construido con un contexto de aplicación Spring. El contexto tiene dos Fábricas de sesión de Hibernate configuradas en él, a su vez utilizando las fuentes de datos Commons DBCP configuradas en Spring.
Actualmente no hay administración de transacciones, pero me gustaría agregar algunas. La actualización a una base de datos depende de una actualización exitosa a la otra.
La aplicación no se encuentra en un contenedor de Java EE: es iniciada por una clase de iniciador estático llamada desde un script de shell. La clase de iniciador crea una instancia del contexto de la aplicación y luego invoca un método en uno de sus beans.
¿Cuál es la "mejor" manera de poner la transaccionalidad en las actualizaciones de la base de datos?
Le dejaré la definición de 'mejor', pero creo que debería ser una función de 'fácil de configurar', 'fácil de configurar', 'económico' y 'fácil de empaquetar y redistribuir'. Naturalmente, el software libre sería bueno.