【发布时间】:2023-03-04 06:25:01
【问题描述】:
Spring Data JPA 或 Hibernate 默认将自动提交设置为 false。这听起来很合理,因为这些框架与实体一起工作,并且对实体的更新可能涉及通过多个 SQL 查询对多个表的更新。因此,通过将 auto-commit 设置为 false 并显式控制事务,这些框架可确保对实体的更改是原子的且一致的。
但是现在 Hikari 是 spring data jpa 的默认连接池提供程序,在查看应用程序日志时,我看到 hikari 将连接池的自动提交设置为 true。
2021-10-24 11:30:07.815 DEBUG [restartedMain] com.zaxxer.hikari.HikariConfig||HikariConfig.logConfiguration:1135: autoCommit................................true
任何关于为什么这样设置以及是否会影响事务的解释(我认为它不会影响事务,因为每个事务可能会再次将自动提交设置为 false,从而接管何时提交事务。)
编辑 - 关注@ken-chan 的回答和讨论。
对于使用带有@Transactional(100% Hiberante)的spring data jpa 的项目,将hikaris 连接池设置更改为auto-commit=false 应该会带来性能优势。详情请参阅答案和后续讨论。
【问题讨论】:
-
请阅读 ken-chan 的回答和讨论。它进入了很好的细节。如果您认为问答带来了有用的学习,请为问答投票。
标签: spring-boot hibernate spring-data-jpa hikaricp