1

我目前有以下情况:

我已经构建了一个客户端 Java 应用程序,用于直接与 MySQL 数据库通信。当我插入大量数据时,我曾经这样做是AutoCommit关闭的。这很容易做到,因为我可以直接访问Connection. 我之所以选择这样做,是因为它使我能够在同步过程中出现问题时回滚更改。

现在,应用程序正在发展,我认为我最好构建一个与 MySQL 数据库通信的服务器 API。所以,目前,我通过 Http 请求插入数据。每个请求都会打开和关闭一个新的Connection.

现在,我希望能够在其中一个请求出错时回滚更改。我假设我不能使用AutoCommit,因为这是基于 a 的Connection,并且对于每个请求来说都是不同的。

谁能告诉我这通常是怎么做的?

我想到了以下几点:

  • 首先调用一个将 设置AutoCommit为 false 的 URL,然后执行所有请求并检查是否失败。但是,如果另一个客户端也同时插入数据,这会出错。
  • 通过一个请求将数据发送到服务器,但这将迫使我彻底改变我的设计。

注意:我知道提问时通常需要一些代码,但我看不出这将如何改善我的问题。但是,如果需要,请随时提出要求。

4

1 回答 1

1

每个 Web 请求都应该在它自己的事务中运行。

在一个请求中发送属于一个逻辑事务的所有数据,并在请求处理结束时调用 commit。

跨越多个 Web 请求的事务是一个坏主意。想想从不提交的崩溃客户端。这将为您留下永远不会关闭的未完成交易。

于 2015-05-12T10:33:07.713 回答