FrankGui 2013-11-20 18:43
浏览 250
已采纳

请教:Spring的编程式事务能否支持分离式执行和提交?

因为就有的历史遗留问题,存在下面的使用场景:
1.在一个Request中执行SQL语句,比如Update
2.UI上可能由一个Button(比如Commit),执行时才真正COmmit数据,此时属于另外一个Request。
(这个不合理,大家都知道,应该马上提交,否则容易引起数据库死锁。但是,实实在在存在。我们是通过自己创建的虚假的DummySession,每次Request都会讲这个Dummy Session标志放到Request中,两次Request时的Session相同说明属于同一个会话。)

参照了Spring的PlatformTransactionManager文档,发现事务此Class和DataSource并没有直接关联,而是通过TransactionSynchronizationManager这个CLass,利用TheadLocal的方式在DataSource(以及其创建的Connection)和Transaction之间建立关联。这样的话,如果上面1、2两个步骤在同一个Thread中肯定就没有问题,但是我们这种情况就没法保证是同一个Session了。

不知道什么方式可以实现这个需求,请指教!

  • 写回答

1条回答 默认 最新

  • jinnianshilongnian 2013-11-20 20:08
    关注

    UI上可能由一个Button(比如Commit),执行时才真正COmmit数据,此时属于另外一个Request。 这个是两次请求,ThreadLocal肯定解决不了, 你上边提到了这个呢 需要把数据先放到session中/隐藏表单,当点击按钮时才去保存数据;;;或者建立一个临时表 这个临时表存储着数据的序列化/json形式的数据(持久存储了),页面存储一个id,点击按钮时取出来然后保存到数据库

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥50 power BI 从Mysql服务器导入数据,但连接进去后显示表无数据
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题