0

环境:应用程序使用 Spring Framework 2.5.6.SEC01 和 iBatis 2.3.4.726。它是 MVC 设计。

这是场景:

  1. 从客户端输入/更新数据

  2. 按更新按钮提交

  3. 处理数据并执行 DML(插入、更新、删除)

  4. 将结果返回给客户端并显示数据

  5. 但是,在加载页面后,我需要通过 Javascript 调用 API(我无法控制 API,只需要传递所需的参数并检查结果是 SUCCESS 还是 ERROR)

  6. 如果 API 返回 SUCCESS,则无需执行任何操作。但它返回错误,我发出警报消息通知用户。

    我有视图(客户端)、服务和数据访问层。当客户端提交时(场景#2),它进入Service处理数据并自动启动Transaction(场景#3)。退出服务并返回客户端时自动执行提交以显示数据(场景 #4)。

问题:如何暂停事务以不执行提交,然后返回客户端通过 Javascript 调用 API当 API 返回 SUCCESS 时,通过 Ajax(或其他方式)执行提交,或者回滚。

感谢任何有关正确方向的指导。

4

1 回答 1

1

如果我理解正确,您想启动数据库事务,插入数据(不提交),保持连接和事务打开,返回客户端,并根据一些 javascript 结果,执行提交。

这感觉就像一个奇怪的设计,客户端实际上可以保持连接打开,使您的应用程序极易受到 (D)DOS 攻击或一般客户端问题的影响。

我会非常努力地改造它,如下所示:

  1. 提交后,调用您需要确认提交/保存操作的 javascript
  2. 当javascript成功时,提交到您自己的服务器
  3. 在 DAO 中进行正常的连接/事务处理,而不是向客户端公开事务。

这更快,更健壮,也可能更少的代码。

于 2011-07-01T18:53:33.637 回答