如何使用Spring和Hibernate为Web应用程序和批处理作业设置事务

时间:2017-08-29 05:52:59

标签: java hibernate spring-mvc transactions

我有一个使用Spring 4.3和Hibernate 5.3的应用程序。

有一个带有表示层,服务层和DAO层的Web应用程序,以及一些共享相同服务和DAO层的作业。

使用@Transactional注释在不同的层中初始化事务。

它引发了我在这里描述的问题:使用Spring 4.3从外部事务控制内部事务设置

我读了一些关于如何设置事务以将Spring和Hibernate连接在一起的内容。看起来推荐的方法是初始化服务层中的事务。

我不喜欢的是大多数交易只是因为hibernate正常工作所必需的。

当我真的需要一个调用多种服务方法的作业的事务时,似乎我没有选择继续从作业初始化事务。因此,将@Transactional注释从DAO移动到服务似乎没有任何区别。

您如何建议为此类应用设置交易?

1 个答案:

答案 0 :(得分:0)

请原谅我答复,因为我无法发表评论

我不明白你必须继续从工作中初始化交易?

通常为

  • DAO类,应使用Name: https_proxy 进行注释。
  • 包含@Repository@Service
  • 的服务类
  • Webservice(如果有),@Transactional@RestController@RequestMapping

通过这样做,来自服务类的任何调用都将是1个事务,因此如果服务类A调用服务B和C,即使服务类C抛出错误,整个事务也将回滚。