mem*_*und 6 java spring jpa spring-data spring-data-jpa
我正在使用spring-data-jpa interface CrudRepository在每日批量导入中将大型数据集保存在数据库中.
@Bean
public ItemWriter<MyEntity> jpaItemWriter() {
RepositoryItemWriter<MyEntity> writer = new RepositoryItemWriter<>();
writer.setRepository(repository);
writer.setMethodName("save");
return writer;
}
Run Code Online (Sandbox Code Playgroud)
此接口的默认实现是SimpleJpaRepository,它提供了一种saveAndFlush()方法.那个有什么用?这种方法对我来说有什么帮助,例如关于性能,如果我运行这种方法而不是save()?
例如,如果您使用乐观锁定并希望显式捕获OptimisticLockException并将其抛回客户端.如果更改仅在事务提交时刷新到数据库(即,当您的事务方法返回时),则您不能这样做.从事务方法中清除漏洞可以捕获并重新抛出/处理.
从JPA规范:
3.4.5 OptimisticLockException提供程序实现可以推迟写入数据库直到事务结束,这与锁定模式和刷新模式设置一致.在这种情况下,在提交时间之前可能不会发生乐观锁定检查,并且可能在提交的"完成前"阶段抛出OptimisticLockException.如果必须由应用程序捕获或处理OptimisticLockException,则应用程序应使用flush方法来强制进行数据库写入.这将允许应用程序捕获和处理乐观锁定异常
因此,在回答您的问题时,它与性能无关,但可能存在您希望在事务方法中显式刷新数据库的情况.
| 归档时间: |
|
| 查看次数: |
8909 次 |
| 最近记录: |