2015-05-12 43 views
1

目前,我有以下情況:能力回滾更改時使用服務器API插入數據

我構建一個客戶端Java應用程序,用來直接與MySQL數據庫進行通信。當我插入大量數據時,我用AutoCommit關閉。這很容易做到,因爲我可以直接訪問Connection。我選擇這樣做,因爲它使我能夠在同步過程中出現問題時回滾更改。

現在,應用程序在不斷髮展,我認爲我會更好地構建一個與MySQL數據庫通信的服務器API。所以,目前,我通過執行Http請求來插入數據。每個請求打開並關閉一個新的Connection

現在,我希望能夠在其中一個請求出錯時回滾更改。我假設我不能與AutoCommit一起工作,因爲這是基於Connection,而且每個請求都有所不同。

有誰能告訴我這是怎麼做的?

我已經想好了以下內容:

  • 首先調用,它設置AutoCommit爲false,然後做的所有請求,並檢查是否一個失敗的URL。但是如果另一個客戶端也同時插入數據,這會出錯。
  • 用一個請求發送數據到服務器,但這會迫使我徹底改變我的設計。

注:我知道一些代碼通常是在提問時需要的,但我看不出這會如何改善我的問題。但是,如果需要,請隨時提出要求。

回答

1

每個Web請求都應該在它自己的事務中運行。

在一個請求中發送屬於邏輯事務的所有數據,並在請求處理結束時調用commit。

跨越交易accros多個web請求是一個壞主意。考慮崩潰永遠不會提交的客戶端。這會讓你面對永遠不會關閉的開放式交易。