Spring Boot 3, Hibernate JPA Debug : Encountered deprecated setting [javax.persistence.sharedCache.mode], use [jakarta.persistence.sharedCache.mode] instead

jpa cahce 설정 관련 debugging
김주혁's avatar
Jul 05, 2024
Spring Boot 3, Hibernate JPA Debug : Encountered deprecated setting [javax.persistence.sharedCache.mode], use [jakarta.persistence.sharedCache.mode] instead
 
대충
 
javax.persistence.sharedCache.mode가 deprecated됐으니,
 
jakarta.persistence.sharedCache.mode를 사용하라는 말 같다.
 
Spring boot 3부터 javax에서 jakarta로 변경되기 때문에 Hibernate 버전과 Spring boot 버전 문제로 에러가 발생하는 것으로 추정된다.
 
관련된 깃헙 이슈를 보면
 
해결책으로 다음과 같이 옵션을 추가하라고 나와 있다.
/** * All entities and entity-related state and data are cached. */ ALL, /** * Caching is disabled for the persistence unit. */ NONE, /** * Caching is enabled for all entities for <code>Cacheable(true)</code> * is specified. All other entities are not cached. */ ENABLE_SELECTIVE, /** * Caching is enabled for all entities except those for which * <code>Cacheable(false)</code> is specified. Entities for which * <code>Cacheable(false)</code> is specified are not cached. */ DISABLE_SELECTIVE, /** * * Caching behavior is undefined: provider-specific defaults may apply. */ UNSPECIFIED
기본값은 .입니다 UNSPECIFIED 이고, 해당 설정값을 소문자로 하다가 Exception이 발생했다고 하니,
 
대문자로 넣어주자
 
기본적으로 해당 옵션을 번역하면,
JPA 엔티티 캐싱 옵션
  • ALL: 모든 엔티티와 엔티티 관련 상태 및 데이터가 캐싱됩니다.
  • NONE: 영속성 유닛에 대한 캐싱이 비활성화됩니다.
  • ENABLE_SELECTIVE: @Cacheable(true)가 지정된 모든 엔티티에 대해 캐싱이 활성화됩니다. 그 외의 엔티티는 캐싱되지 않습니다.
  • DISABLE_SELECTIVE: @Cacheable(false)가 지정된 엔티티를 제외한 모든 엔티티에 대해 캐싱이 활성화됩니다. @Cacheable(false)가 지정된 엔티티는 캐싱되지 않습니다.
  • UNSPECIFIED: 캐싱 동작이 정의되지 않았습니다. 제공자별 기본값이 적용될 수 있습니다.
각 옵션이 JPA 엔티티에 미치는 영향
  • ALL: 모든 엔티티와 관련 데이터가 캐싱되므로 데이터베이스 조회 횟수가 크게 줄어들어 성능이 향상됩니다. 하지만 메모리 사용량이 증가할 수 있습니다.
  • NONE: 캐싱이 비활성화되므로 데이터베이스 조회 횟수가 증가하여 성능이 저하될 수 있습니다. 메모리 사용량은 감소합니다.
  • ENABLE_SELECTIVE: @Cacheable(true)가 지정된 엔티티만 캐싱되므로 선별적인 성능 향상이 가능합니다. 메모리 사용량은 NONE 옵션보다 증가하지만 ALL 옵션보다는 적습니다.
  • DISABLE_SELECTIVE: @Cacheable(false)가 지정된 엔티티를 제외한 모든 엔티티가 캐싱되므로 대부분의 엔티티에 대해 성능 향상이 가능합니다. 메모리 사용량은 ENABLE_SELECTIVE 옵션보다 증가할 수 있습니다.
  • UNSPECIFIED: 제공자별 기본값이 적용되므로 성능과 메모리 사용량은 제공자에 따라 다를 수 있습니다.
 
라고 한다.
실제 적용 값은 다음과 같다.
# application.yaml jpa: properties: jakarta: persistence: sharedCache: mode: ALL
 
jpa entity 캐싱과 관련된 값으로, 원하는 캐싱 동작에 따라 설정을 활성화 해주면0 된다.
Share article

vlogue