gpt4 book ai didi

java - 在 Struts 2 操作中使用和控制 Spring 事务

转载 作者:搜寻专家 更新时间:2023-10-31 20:06:46 24 4
gpt4 key购买 nike

我已经在一个包含以下组件的项目上工作了一段时间:

  • Struts2.1.8.1,
  • Spring 3.0.3
  • JPA 2.0,
  • hibernate 3

我正在使用 Spring 的 EntityManager 魔法...但是我在处理我的操作中的事务时遇到了问题。例如,我在我的类中的几个方法中为我的持久对象设置值,如果 validate 方法发现验证错误,我希望能够 rollback,或者否则提交这些更改。我已经花了相当长的时间阅读了一半的互联网以获得全面的解释。不幸的是,不存在完整的示例(至少类似于我的堆栈)。

我在邮件列表中偶然发现了这个线程:@Transactional Spring Annotation in a Struts2 Action does not work .我链接的消息似乎有一个非常简单直接的解决方案,使用 TransactionInterceptor 似乎可以解决问题......问题是我没有找到关于这个拦截器的有用信息.

这里的任何人都对这项技术有经验,并且可以提供有关如何在 Struts2 操作中使用 Spring 事务的提示和一两个链接吗?

谢谢!

- 编辑 1 -

我已经建立了一个测试项目,如果你有兴趣,就download the file并尝试(或检查)。谢谢!

最佳答案

通常, Controller /操作/支持 bean/等不处理事务。操作是后端代码的网络部分——它们应该只关心收集请求数据和发送响应数据。逻辑本身(包括数据库访问)应该在另一层完成。例如。一个服务层。因此,您创建了另一个 bean,将其注入(inject)到操作中,并让它完成工作 - userService.register(user) .然后在服务层上配置事务应该是微不足道的,因为它在 spring 文档和无数示例中都有:

<tx:annotation-driven />@Transactional (顺便说一句,确保你现在有 <tx:..>,它可能是导致问题的原因。即使它有效,这也不会使我对服务层的建议无效)

关于java - 在 Struts 2 操作中使用和控制 Spring 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4493911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com