我想使用Spring的事务管理特性来实现事务。但我不确定哪一个更好(AOP vs @Transactional)。这两个特性都正常工作吗?发展效率有什么不同吗?
(添加)这里AOP的意思是“使用AspectJ而不显式地使用@Transactional注释”
(补充)我想知道注释-config和基于XML的配置的区别。
发布于 2013-09-23 20:11:28
我自己也很好奇。我在春季论坛上找到了一个关于这个主题的很好的讨论。
下面我总结一下我从上述链接中获得的信息:
AOP交易分界
好处:
缺点:
@Transactional弹簧注释
好处:
缺点:
讨论让我想起了JPA注释与JPA配置。使用基于XML的JPA配置,实体“更干净”,但这种分离值得吗?或者甚至,分离是否有害(能够打开java源文件并根据@Entity注释立即知道类是EJB)是件好事?实际上,在我看来,大多数开发人员选择使用JPA注释。不过,在这种情况下,与@Transactional不同,jpa注释是一个标准,因此可能有助于缓解一些担忧。
尽管如此,我也参与了一些项目,比如我们使用了Spring的AOP配置来注释Struts2 (webwork)拦截器,从而允许每个请求只进行一个事务,这非常有效。在这种情况下,我们并不真正担心服务层或其他地方的事务边界--所有东西都已经参与了事务,而且由于在拦截器关闭事务之前呈现的视图没有必要应用OpenSession/EntityManagerInView解决方案。
https://stackoverflow.com/questions/18528876
复制相似问题