我一直在尝试学习Spring和Hibernate,并且我在网络上使用了很多示例来组合一个不错的应用程序。但是,我现在意识到Spring支持事务管理。在我的春季应用程序中,我只是简单地拨打了我想要的任何电话,直接进入了休眠状态。人们为什么会使用Spring的事务管理/数据库资料,是否有原因/好处?
真正的优点是:
public void saveEmployee(Employee e) { Session s = sf.getCurrentSession(); s.getTransaction().begin(); s.save(e); s.getTransaction().commit();
}
和
@Transactional public void saveEmployee(Employee e) { sf.getCurrentSession().save(e); }
灵活的交易传播。想象一下,现在您需要在saveEmployee()复杂事务中执行此方法。对于手动事务管理,由于事务管理是硬编码的,因此您需要更改方法。使用Spring,事务传播可以顺利进行:
saveEmployee()
@Transactional
public void hireEmployee(Employee e) { dao.saveEmployee(e); doOtherStuffInTheSameTransaction(e); }
发生异常时自动回滚