본문 바로가기

Back-End/JPA

JPA 1차 캐시 - Database와 동기화가 되지 않은 데이터를 읽는 문제

문제

                            Data                           Data`                                    Data

Service 1 =>                                    => Data 수정

Service 2 => Data 조회 ( 캐시에 남음 )                        => Data 조회하려 했지만 수정된 데이터가 아니라 캐시에 남은 Data를 조회함

 

수정된 Data가 검색되는게 아니라 JPA 1차캐시에 남아 있는 기존 Data를 Service 2에서 검색하는 문제였다.

 

스프링 마이크로서비스를 개발하면서 이런 일이 많을 것 같은데 어떠한 해결방법이 있을까?

 

해결방법

1. flush()

Service2에서 Data를 조회하기 전에 flush()를 호출하여 Database와 1차 캐시를 동기화해주는 방법

하지만 성능상 이슈?