我有一个多线程的应用程序,其中解析文件并插入数据库 - 我有一个数据库连接池写入数据库 - 我需要添加事务控制通过解析/写入整个操作即如果在解析/ 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服务连接