gpt4 book ai didi

spring - spring-managed-transaction 可以在多个请求-响应中存活吗?

转载 作者:行者123 更新时间:2023-12-01 14:37:58 28 4
gpt4 key购买 nike

我目前正在使用 jsf 2、jpa 2 和 spring 3 进行开发。

我想我非常理解@Transactional 的使用及其传播,但仍然只适用于一个线程,在我的例子中是我的 webapp 的一个请求响应

基本上我需要的是:

  1. 远程业务服务的客户端是发起和结束事务的客户端
  2. spring 会在发生异常时进行异常翻译

这里有一个例子,希望可以描述意图:

  1. 客户端(假设它是移动设备,不一定是网络应用程序)要求服务器创建一个新事务
  2. 服务器返回一个交易id
  3. 客户端调用serviceA,传递transactionId使用
  4. serviceA 使用事务运行(基于传递的 transactionId)完成,但事务未提交
  5. 客户端继续调用serviceB,传递相同的transactionId来使用
  6. serviceB 使用之前由 serviceA 发起的事务运行
  7. 如果serviceB运行正常,那么client可以根据transactionId向server请求commit
  8. 如果 serviceB 运行异常,spring 可以进行 sql 异常翻译

这可能吗?

谢谢!

最佳答案

我希望你实际上不需要这么长的交易...这通常是一个很糟糕的主意,因为交易应该尽可能短(如果你需要解释,只需 google this mantra怀疑它)。

相反,您可能只需要“长对话”:基本上,您在多个调用/请求中使用分离的实体(对数据库进行只读访问),然后重新附加它们(使用您的更改)当您准备好提交交易时。

无论哪种方式,@Transactional 在这里确实没有用,我不知道有任何开箱即用的机制可以实现您所描述的。

也许考虑使用 spring webflow:它提供了易于使用的与对话相关的功能,并且应该在您的上下文中工作得很好(JPA/JSF)...

参见相关讨论 here .

HTH

关于spring - spring-managed-transaction 可以在多个请求-响应中存活吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6292166/

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