我想使用Spring的事务管理功能实现事务。但我不确定哪个更好(AOP vs @Transactional)。这两个功能是否正常工作?发展效率有什么不同吗?
(新增) 这里AOP的意思是“在不使用@Transactional注释的情况下使用AspectJ”
(新增) 我想知道annotation-config和基于XML的配置的区别
答案 0 :(得分:3)
我自己也想知道这件事。我在Spring forum上找到了关于这个主题的很好的讨论。
下面我总结一下上述链接中的内容:
优点:
缺点:
@Transactional
Spring注释优点:
缺点:
讨论让我想起了JPA注释与JPA XML配置。使用基于XML的JPA配置,实体“更清洁”,但分离值得努力吗?或者甚至可能是分离有害(能够打开java源文件并立即根据@Entity注释知道该类是EJB)很好吗?实际上,在我看来,大多数开发人员都选择使用JPA注释。虽然在这种情况下不像@Transactional
,但jpa注释是标准,因此可能有助于缓解一些问题。
那就是说,我参与了项目,因为我们使用Spring的AOP配置来注释一个Struts2(webwork)拦截器,允许每个请求进行一次事务处理,这很好。在这种情况下,我们并没有真正担心服务层或其他地方的事务边界 - 一切都已经参与了事务,并且由于在拦截器关闭事务之前呈现的视图,因此不需要应用{{1解决方案。