John Baker John Baker - 1 year ago 66
Java Question

Benefits of using Springs Transaction management vs using hibernate

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 transaction management. In my spring app I just simply made whatever calls I wanted to, directly to hibernate. Is there a reason/benefit as to why people would use Spring's transaction management/db stuff?

Answer Source

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

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download