Spring数据JPA或Hibernate默认将自动提交设置为false。这听起来很合理,因为这些框架与实体一起工作,对实体的更新可能涉及通过多个SQL查询对多个表进行更新。因此,通过设置自动提交为false并显式控制事务,这些框架确保了对实体的更改是原子的和一致的。
但是现在Hikari是spring数据jpa的默认连接池提供者,在查看应用程序日志时,我看到hikari设置了连接池的true自动提交。
代码语言:javascript复制2021-10-24 11:30:07.815 DEBUG [restartedMain] com.zaxxer.hikari.HikariConfig||HikariConfig.logConfiguration:1135: autoCommit................................true任何关于为什么会这样设置和是否会影响事务的解释(我不认为它会影响事务,因为每个事务可能再次将自动提交设置为false,从而接管提交事务的时间)。
编辑-追踪@ken答案和讨论.
对于使用带有@Transactional的spring的项目(使用100% Hiberante),将hikaris连接池设置更改为auto-commit=false应该会提高性能。请参阅答案和后续讨论,以了解更多细节。