警告:JPA 不支持自定义隔离级别,因此启动 Jobs 时可能不会获取锁
Posted
技术标签:
【中文标题】警告:JPA 不支持自定义隔离级别,因此启动 Jobs 时可能不会获取锁【英文标题】:Warning: JPA does not support custom isolation levels, so locks may not be taken when launching Jobs 【发布时间】:2020-06-16 23:09:16 【问题描述】:在我的应用程序(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
我对 Spring Boot 隔离级别做了一些研究,我们有:DEFAULT
、READ_COMMITTED
、READ_UNCOMMITTED
、REPEATABLE_READ
和 SERIALIZABLE
。
从警告中我了解到 JPA 不支持该功能,但仅对给定数据库使用 DEFAULT,就我而言,Postgres 是 READ_COMMITTED
。
我还读到 Spring 批处理事务的默认隔离级别是 SERIALIZABLE
,以防止同时执行同一个作业实例。
谁能解释一下,我什么时候会担心这个警告?我不知道我是否应该为此做点什么。
【问题讨论】:
【参考方案1】:READ_COMMITTED
应该可以与 Postgers 一起正常工作。来自 Spring Batch 文档的 Transaction Configuration for the JobRepository 部分:
该方法的默认隔离级别是 SERIALIZABLE,这是相当激进的:READ_COMMITTED 也可以工作
所以我相信这个警告可以忽略。
【讨论】:
以上是关于警告:JPA 不支持自定义隔离级别,因此启动 Jobs 时可能不会获取锁的主要内容,如果未能解决你的问题,请参考以下文章