警告:JPA 不支持自定义隔离级别,因此启动作业时可能不会采取锁定

Mac*_*rol 5 java spring spring-batch spring-data-jpa spring-boot

在我的应用程序(Spring Boot、Spring Data JPA、Spring Batch、Postgres DB)启动期间,我收到这样的警告:

2020-03-04 11:53:24.559  WARN [-,,,] 25743 --- [           main] o.s.b.a.batch.JpaBatchConfigurer         : JPA does not support custom isolation levels, so locks may not be taken when launching Jobs
Run Code Online (Sandbox Code Playgroud)

我对 Spring Boot 隔离级别做了一些研究,我们有:DEFAULTREAD_COMMITTEDREAD_UNCOMMITTED和。REPEATABLE_READSERIALIZABLE

从警告中我了解到 JPA 不支持这一点,但只需对给定的数据库使用 DEFAULT,在我的例子中,Postgres 是READ_COMMITTED.

我还读到 Spring 批处理事务的默认隔离级别是SERIALIZABLE 为了防止同一作业实例同时执行。

有人可以解释一下,我什么时候应该担心这个警告?我不知道我是否应该为此做点什么。

Mah*_*ine 1

READ_COMMITTED应该可以与 Postgers 配合使用。来自Spring Batch 文档的JobRepository 的事务配置部分:

该方法的默认隔离级别是 SERIALIZABLE,这是相当激进的:READ_COMMITTED 也可以工作

所以我相信这个警告可以被忽略。