java - Spring JPA,CrudRepository 的 save 方法是否立即提交到 DB?

标签 java spring-boot hibernate jpa spring-data-jpa

默认情况下,Spring Data JPA 已禁用自动提交。
因此,如果我正在使用/扩展 CrudRepository使用 save 保存对象方法,幕后发生了什么?将对象保存到数据库后,spring jpa 是否也提交了操作。
如果没有,我如何明确提交操作?
编辑以下“Michal Drozd”评论: (以下是针对 JpaRepository 而不是 CrudRepository)
本文:Difference Between save() and saveAndFlush() in Spring Data JPA似乎表明对于 Spring Data JPA,默认情况下自动提交为 false。

When we use the save() method, the data associated with the save operation will not be flushed to the DB unless and until an explicit call to flush() or commit() method is made.

最佳答案

save() CrudRepository的方法是 @Transactional本身。因此,如果您不在另一个事务的上下文中调用它,它将创建一个并根据持久化实体的成功或失败提交或回滚它。

关于java - Spring JPA,CrudRepository 的 save 方法是否立即提交到 DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64151939/

相关文章:

java - 如何在 Spring Boot 中反序列化/序列化类型 Geometry?

java - FTPClient和Hibernate的递归方法,速度优化

java - WebDriver等待iframe,通过其名称的一部分进行识别

java - Flux 返回空对象

java - 将 bean 注入(inject) WebMvc 测试的上下文中 : @AutoConfigureMockMvc cannot be used in combination with the @Component annotation @Configuration

java - 创建条件语句,一次查询得到结果和行数

java - @Transactional (noRollbackFor=RuntimeException.class) 不会阻止在 RuntimeException 上回滚

java - Java 新手,想知道 Scanner 读取的 if 语句和字符串

java - XML文本处理

java - 如何使用 Spring Boot、Gradle 和 JSP 构建项目