I\'ve been trying to learn spring and hibernate, and I\'ve used a lot of examples around the net to put together a nice application. However, I realized now that Spring supports
The real advantages are:
Lightweight declarative syntax. Compare:
public void saveEmployee(Employee e) {
Session s = sf.getCurrentSession();
s.getTransaction().begin();
s.save(e);
s.getTransaction().commit();
}
and
@Transactional
public void saveEmployee(Employee e) {
sf.getCurrentSession().save(e);
}
Flexible transaction propagation. Imagine that now you need to execute this saveEmployee()
method as a part of a complex transaction. With manual transaction management, you need to change the method since transaction management is hard-coded. With Spring, transaction propagation works smoothly:
@Transactional
public void hireEmployee(Employee e) {
dao.saveEmployee(e);
doOtherStuffInTheSameTransaction(e);
}
Automatic rollback in the case of exceptions