java - HikariCP 自动提交用法与常规 java 连接自动提交用法相同吗?

标签 java connection rollback hikaricp autocommit

我最近使用 HikariCP。之前我用自己的简单的ConnectionPool来满足我们的需求。在我们的软件中,有时我们需要执行多个数据库插入,其中每个插入都取决于某些验证。或多或少类似于此网站的示例:http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#commit_transactions

按照我以前的方式,当我使用自己的 conn 池时,我总是将连接对象设置为 setAutoCommit(false),然后再将其提供给请求对象,以便数据库管理器可以在出现问题时手动回滚数据。就像示例中一样,如果 try 捕获任何异常,那么它将调用回滚函数。当我返回连接时,我在连接返回中调用connection.commit(),并在连接池管理器中将autocommit设置回true。

我的问题:HikariCP 是否仍然使用相同的程序来满足我的需求?意思是,将自动提交设置为 false(我阅读了手册,您的配置有自动提交参数),然后我们只需手动回滚或提交事务然后返回到池?或者是否有一些自动化完成,我们可以抛出异常,并且如果我没有将配置参数设置为 Autocommit = false,HikariCP 将在出现错误时自动调用回滚或在连接返回时调用提交?

感谢您提供任何信息。 伦德拉

最佳答案

HikariCP 自动提交行为与没有池时相同。如果 autoCommit=false,则您负责在 try-finally 中提交/回滚。所以,是的,您只需提交/回滚,然后将连接返回到池中。

事实是,如果 autoCommit=false,并且您在没有提交的情况下运行查询,那么 HikariCP 将在返回池时自动回滚。但是,这是为了安全起见,我不鼓励您基于这种行为进行编码。如果您选择切换池,这样做会降低您的代码的可移植性。

关于java - HikariCP 自动提交用法与常规 java 连接自动提交用法相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33607167/

相关文章:

java - 如何使用 Java 8 库将 UTC DateTime 转换为另一个时区?

java - SLF4J 可变参数将第一个字符串解释为标记

java - 使用 Java FTP 连接到本地主机

java - JPA:回滚后刷新分离的实体并重新附加它

clearcase - 如何回滚 checkin 到 Clearcase 的文件?

sql - 创建SQL Server回滚脚本的最佳方法?

java - @SqlBatch 在 jdbi sql 对象 api 中进行多次插入

php - 如何从 PHP 检查网络连接或数据库服务器的负载?

安卓可穿戴设备 : How to handle the event of a connected device?

java - 替换中 fragment 事务无法正常工作