Sto realizzando per hobby una piccola applicaziona Java stand-alone.

A livello di back-end la mia applicazione ha la seguente stratificazione

Business
--------
DAO
-------
DB MySql

Per l'interazione con il db uso Hibernate.

Il mio problema è il seguente: gestire le transazioni a livello di business. Mi spiego meglio.

Supponiamo che un metodo di business faccia due o più chiamate al DAO. Ogni operazione del DAO è gestita come transazione da Hibernate. Io però vorrei che anche il metodo di business venga considerato una transazione, indipendentemente se fa chiamate ai DAO o no.

Se ad esempio il mio metodo di business fa:

dao.faiQualcosa();
dao.faiQualcheAltraCosa();

io vorrei che queste due operazioni o vengono fatte tutte due o nessuna.

So che per esempio gli EJB consentono di realizzare questo.
Non trovandomi su un application-server, avevo pensato di orientarmi verso Spring, ma pure leggendo le reference, non ho capito molto su come gestire le transazioni.

Spero di aver chiarito il problema, grazie per l'aiuto.