Gestire le transazioni con Hibernate è facilissimo. Hai due DB diversi? Non c'è problema.
Immagino che tu abbia due BusinessDelegate, uno si riferisce ad un DB (primo schema) e l'altro si riferisce al secondo DB(secondo schema). All'interno dell'Action che hai fatto con spring basta fare:
Codice PHP:
Transaction transactionPrimoDB = null;
Transaction transactionSecondoDB secondoDB = null;
SessionFactory primoDBSession = Il tuo managerDelPrimoDB.getInstance().dao.getSessionFactory()
Session sessionPrimoDB = primoDBSession.getCurrentSession();
transactionPrimoDB = sessionPrimoDB.beginTransaction();
SessionFactory secondoDBSession = Il tuo managerDelSecondoDB.getInstance().dao.getSessionFactory()
Session sessionSecondoDB = primoDBSession.getCurrentSession();
transactionSecondoDB = sessionSecondoDB.beginTransaction();
//esegui le query dei due db;
transactionPrimoDB.commit();
transactionSecondoDB.commit();
ovviamente tutto questo all'interno di un try e cath. Nel Finally metti semplicemente un controllo if che dice:
Codice PHP:
se transactionPrimoDB != null
transactionPrimoDB.rollback();
per maggiore sicurezza fai il controllo anche su transactionSecondoDB