使用服务器API插入数据时能够回滚更改

时间:2015-05-12 10:01:48

标签: java mysql httprequest server-application

我目前有以下情况:

我构建了一个客户端Java应用程序,用于直接与MySQL数据库通信。当我插入大量数据时,我常常在关闭AutoCommit的情况下执行此操作。这很容易做到,因为我可以直接访问Connection。我选择这样做,因为它使我能够在同步过程中出现错误时回滚更改。

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

现在,我希望能够在其中一个请求出错时回滚更改。我假设我无法使用AutoCommit,因为这是基于Connection,而且每个请求都有所不同。

有人能告诉我这是怎么做到的吗?

我想到了以下几点:

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

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

1 个答案:

答案 0 :(得分:1)

每个网络请求都应该在自己的交易中运行。

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

根据多个网络请求进行交易是一个坏主意。考虑崩溃永不提交的客户端。这将使您处于永不关闭的未结交易。