我有一個多線程的應用程序,其中解析文件並插入數據庫 - 我有一個數據庫連接池寫入數據庫 - 我需要添加事務控制通過解析/寫入整個操作即如果在解析/ db-insert操作期間出現任何錯誤,我想回滾整個操作,其中我的部分數據庫寫入需要回滾 - 是否有任何方法可以執行此操作?通過連接池的事務控制
1
A
回答
0
您需要將連接從池中取出,在其上啓動數據庫事務,並在事務處理期間將其保留在池外。一旦完成(提交或回滾)事務,您只會將其返回給池。
這顯然意味着您不能並行運行更多的事務,而不是您的池中有連接。如果你不能接受這個限制,你將不得不設計你自己的解決方案,它不依賴於數據庫事務(例如,使用「stage」表來接受帶有一些唯一標識符的數據,然後立即將它移動到主存儲中,加上刪除陳舊數據的任務)。
我建議您閱讀Spring's transaction manager尋求靈感。
0
如果我理解正確,你有一個應用程序將文件分成幾個部分,每個部分由不同的線程進行分析,每個部分都使用自己的連接。
如果您可以使用XA事務,我認爲事務管理器可以幫助您。每個連接都會形成一個單獨的事務分支,因此每個線程都可以在單獨的事務參與者上工作。最後,2PC將確保全部承諾或回滾。
相關問題
- 1. 控制檯程序的JNDI連接池?
- 2. 連接池監控
- 3. 事務超時和連接池問題
- 4. 通過jOOQ事務訪問JDBC連接
- 5. 更改連接池與控制檯
- 6. 如何更好地控制連接池?
- 7. 通過ad-hoc連接通過WiFly屏蔽控制Arduino連接的舵機
- 8. 通過GlassFish的連接池連接到MySQL
- 9. 連接到遠程SSH服務器(通過Node.js/html5控制檯)
- 10. JDBC連接池監控GlassFish
- 11. Tomcat連接池監控
- 12. Pymongo,通過Celery進行連接池和異步任務
- 13. 超時過期:連接池
- 14. PreparedStatement的池連接池
- 15. C3P0連接池與MySQL連接池
- 16. Jboss連接池或休眠連接池
- 17. Tomcat連接池概念&c3p0連接池?
- 18. 通過事先等價的MySQL連接
- 19. 通過每個線程的新連接實例的連接池(JDBC)
- 20. glassfish服務器中的JDBC連接池
- 21. 使用通用連接池的ORA-27101
- 22. 連接通過Glassfish 3.1連接池關閉SQL Server 2008的錯誤
- 23. 通過JNDI不理解WAS連接池中的數據庫連接
- 24. Java連接池不限制向DB服務器打開的TCP連接數
- 25. 索尼Qx 10 - 通過USB連接的相機觸發控制
- 26. 通過Apex中的REST API連接docusign控制檯
- 27. 連接池 - 無連接
- 28. asyncpg - 連接vs連接池
- 29. 通過SSH連接的Ant SCP任務
- 30. 通過SSL的SOAP web服務連接