我最近使用了HikariCP。在我使用我自己的简单ConnectionPool来满足我们的需求之前。在我们的软件中,有时我们需要执行多个数据库插入,其中每个插入都依赖于一些验证。或多或少像这个网站上的示例:http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#commit_transactions
按照我以前的方式,当我使用自己的conn池时,在将connection对象提供给请求对象之前,我总是将其设置为setAutoCommit(false),以便数据库管理器可以在出现错误时手动回滚数据。与示例中一样,如果try捕获到任何异常,则它将调用rollback函数。当我返回连接时,我在连接返回中调用connection.commit(),并在连接池管理器中将自动提交设置回true。
我的问题是: HikariCP是否仍然使用相同的过程来满足我的需求?也就是说,将自动提交设置为false (我读过手册,您的配置有自动提交参数),然后我们就手动回滚或提交事务,然后返回池?或者,如果我没有将配置参数设置为Autocommit = false,那么HikariCP会在出错时自动调用回滚,或者在连接返回时调用commit吗?
感谢您提供的任何信息。Rendra
发布于 2015-11-10 22:57:09
HikariCP自动提交行为与不使用池的行为相同。如果为autoCommit=false,则您负责在try-finally中提交/回滚。所以,是的,您只需提交/回滚,然后将连接返回到池。
事实是,如果为autoCommit=false,并且您在未提交的情况下运行查询,那么HikariCP将在返回到池时自动回滚。但是,这是为了安全起见,我不鼓励您基于此行为进行编码。这样做会降低代码的可移植性,如果您选择交换池的话。
https://stackoverflow.com/questions/33607167
复制相似问题