当我在JPA配置文件中关闭自动提交时,有人知道为什么我会收到此警告吗?
使用此设置:
<property name="hibernate.connection.autocommit" value="false"/>
Run Code Online (Sandbox Code Playgroud)
生成此警告:
2009-08-04 09:54:10,621 [main] WARN org.hibernate.ejb.Ejb3Configuration - hibernate.connection.autocommit = false break the EJB3 specification
Run Code Online (Sandbox Code Playgroud)
这将如何破坏EJB3规范?
默认情况下,Spring Data JPA 已禁用自动提交。
因此,如果我使用/扩展CrudRepository使用save方法来保存对象,那么幕后发生了什么?将对象保存到数据库后,spring jpa 是否也提交了操作。
如果没有,我如何明确提交操作?
编辑以下“Michal Drozd”评论:( 以下是针对 JpaRepository 而不是 CrudRepository)
这篇文章:Spring Data JPA 中 save() 和 saveAndFlush() 的区别似乎表明对于 Spring Data JPA,默认情况下自动提交为 false。
当我们使用 save() 方法时,与保存操作相关的数据不会被刷新到数据库中,除非并且直到显式调用了 flush() 或 commit() 方法。