Fed*_*res 5 java spring jpa transactions struts2
嘿伙计们,我已经在一个项目上工作了一段时间,其中包含以下组件:
我正在使用Spring的EntityManager魔术......但是我在处理我的动作中的事务时遇到了问题.例如,我在我的类中的几个方法中设置持久化对象的值,并且我希望能够rollback在validate方法找到验证错误时,否则commit这些更改.我已经花了很长时间阅读一半的互联网进行全面的解释.不幸的是,没有完整的例子(至少类似于我的堆栈).
我在邮件列表上偶然发现了这个帖子:Struts2 Action中的@Transactional Spring Annotation不起作用.我正在链接的消息似乎有一个非常简单和直接的解决方案,使用一个TransactionInterceptor将要做的技巧似乎...问题是我没有找到关于这个拦截器的有用信息.
这里的任何人都有使用这项技术的经验,并且可以在Struts2操作中如何使用Spring事务来提供一些提示和一两个链接?
谢谢!
- 编辑1 -
如果您有兴趣,我已经设置了一个测试项目,只需下载文件并试用(或检查它).谢谢!
一般来说,控制器/操作/支持 bean 等不处理事务。操作是后端代码的 Web 部分 - 它们应该只关心收集请求数据和发送响应数据。逻辑本身(包括数据库访问)应该在另一层完成。例如服务层。因此,您创建另一个 bean,将其注入到操作中,并让它完成工作 - userService.register(user)。那么在服务层上配置事务应该是微不足道的,因为它在 spring 文档和无数示例中都有:
<tx:annotation-driven />(顺便说@Transactional一句,请确保您<tx:..>现在拥有,它可能会导致问题。即使它有效,这也不会使我关于服务层的建议无效)