반응형
이미 조회된 DB데이터의 접근 비용을 줄이기 위해 데이터를 캐시하여 retrieve 한다.
https://redisson.org/glossary/hibernate-second-level-cache.html
level2 cache는 큰사이즈의 데이터를 저장하지만 level1 cache보다 느리다고 함.
level2 cache를 사용하기 위해선 설정이 필요하다.
설정은 아래 참고.
https://github.com/redisson/redisson/tree/master/redisson-hibernate
아래는 실서버 적용 설정
springboot, gradle
build.gradle
implementation 'org.hibernate:hibernate-core:5.6.14.Final'
implementation 'org.redisson:redisson-hibernate-6:3.18.1'
application.properties
#jpa hibernate cache
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.redisson.hibernate.RedissonRegionFactory
spring.jpa.properties.hibernate.cache.redisson.fallback=true
spring.jpa.properties.hibernate.cache.redisson.config=redisson.yml
spring.jpa.properties.hibernate.cache.redisson.entity.expiration.time_to_live=600000
spring.jpa.properties.hibernate.cache.redisson.entity.expiration.max_idle_time=300000
spring.jpa.properties.hibernate.cache.redisson.query.eviction.max_entries=10000
spring.jpa.properties.hibernate.cache.redisson.query.expiration.time_to_live=600000
spring.jpa.properties.hibernate.cache.redisson.query.expiration.max_idle_time=300000
redisson.yml
singleServerConfig:
address: "redis://localhost:6379"
password: "password"
Test.java Entity class
@Entity
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "test")
public class Test {
.
.
.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE, region = "test1")
@One to Many
private Test1 test1;
}
READ_WRITE 로 설정하면 DB의 해당 개체가 수정되면 즉시 수정이 반영되어 데이터 일관성이 유지된다고 함.
반응형
'개발 > java_spring' 카테고리의 다른 글
[JPA] native query 에서 @변수 사용 시 오류 (0) | 2023.01.10 |
---|---|
[Spring Boot] JPA native query to dto throw error (0) | 2022.12.19 |
[Spring Boot] Jwt (0) | 2022.11.11 |
[Spring Boot] log4j2, hibernate 설정 (0) | 2022.10.25 |
[Spring Boot]JPA @query null Parameter (0) | 2022.10.18 |