一尘不染

使用Springs Transaction Management与使用Hibernate的好处

java

我一直在尝试学习Spring和Hibernate,并且我在网络上使用了很多示例来组合一个不错的应用程序。但是,我现在意识到Spring支持事务管理。在我的春季应用程序中,我只是简单地拨打了我想要的任何电话,直接进入了休眠状态。人们为什么会使用Spring的事务管理/数据库资料,是否有原因/好处?


阅读 181

收藏
2020-12-03

共1个答案

一尘不染

真正的优点是:

  • 轻量级声明性语法。比较:
    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,事务传播可以顺利进行:

    @Transactional
    

    public void hireEmployee(Employee e) {
    dao.saveEmployee(e);
    doOtherStuffInTheSameTransaction(e);
    }

  • 发生异常时自动回滚

2020-12-03