Что позволяет Spring, благодаря АОП, использовать декларативные транзакции, как вы могли бы сделать с EJB.
Вместо того чтобы делать
public void doSomething() {
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();
// do some work
...
tx.commit();
}
catch (RuntimeException e) {
if (tx != null) tx.rollback();
throw e; // or display error message
}
finally {
sess.close();
}
}
Вы просто сделать
@Transactional
public void doSomething() {
// do some work
}
который является гораздо более удобным для чтения, более ремонтопригодны, менее громоздким и более безопасным, так как Spring обрабатывает транзакционной логики для вас. Вот почему необходим менеджер транзакций: рассказать Spring, как он должен обрабатывать транзакции для вас. Потому что он может также использовать ту же декларативную модель, но использовать транзакции JPA или транзакции JTA.
Это хорошо описано в Spring documentation.
Дубликат http://stackoverflow.com/questions/4940815/benefits-of-using-springs-transaction-management-vs-using-hibernate –