R.B*_*uki 3 java connection autocommit rollback hikaricp
我最近使用 HikariCP。之前我用自己的简单的ConnectionPool来满足我们的需求。在我们的软件中,有时我们需要执行多个数据库插入,其中每个插入都取决于某些验证。或多或少类似于此站点的示例:http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#commit_transactions
按照我以前的方式,当我使用自己的 conn 池时,我总是将连接对象设置为 setAutoCommit(false),然后再将其提供给请求对象,以便数据库管理器可以在出现问题时手动回滚数据。就像示例中一样,如果 try 捕获任何异常,那么它将调用回滚函数。当我返回连接时,我在连接返回中调用connection.commit(),并在连接池管理器中将自动提交设置回true。
我的问题:HikariCP 是否仍然使用相同的程序来满足我的需求?意思是,将自动提交设置为 false(我阅读了手册,您的配置有自动提交参数),然后我们只需手动回滚或提交事务然后返回到池?或者是否有一些自动化完成,我们可以抛出异常,并且如果我没有将配置参数设置为 Autocommit = false,HikariCP 将在出现错误时自动调用回滚或在连接返回时调用提交?
谢谢您提供任何信息。伦德拉
HikariCP 自动提交行为与没有池时相同。如果 autoCommit=false,则您负责在 try-finally 中提交/回滚。所以,是的,您只需提交/回滚,然后将连接返回到池中。
事实是,如果 autoCommit=false,并且您运行查询而不提交,那么 HikariCP 将在返回池时自动回滚。但是,这是为了安全起见,我不鼓励您基于这种行为进行编码。如果您选择切换池,这样做会降低您的代码的可移植性。