본문 바로가기

영속성컨텍스트2

JPA 1차캐시의 동작 방식 만약 같은 테이블을 다른 entity 로 논리적으로 분리하게 되면 1차 캐시가 동작할까? 라는 질문으로부터 1차캐시가 어떻게 동작하는지 궁금해졌다.실제 1차 캐시가 동작하는 방식은 더 복잡하고, 연관관계가 있는 경우에는 또 다르게 동작한다. 그렇기에 해당 포스트에서는 연관관계가 없는 단일 테이블 조회에서 1차 캐시가 어떻게 동작하는지 살펴보고자 한다.1차 캐시란 무엇인가?우선 1차 캐시가 정확히 무엇인가? 라는 질문을 해야한다.JPA 에서 1차 캐시는 영속성 컨텍스트(Persistence Context) 를 의미한다.어플리케이션은 엔티티를 엔티티 매니저 를 통해 다루게 된다.즉, 엔티티 매니저를 통해 entity 의 상태 (managed, detached, removed 등) 을 관리하게 된다. 그리고 .. 2024. 7. 28.
영속성 컨텍스트와 트랜잭션의 관계 1. 영속성 컨텍스트와 트랜잭션의 관계 spring data jpa 만 사용하다보니, typescript의 mikro orm 사용하다가 헷갈리는 개념이 있었다. 그것은 바로 머릿속에 다른 것들은 지워지고, persistence context 는 당연히 transaction 단위로 할당 라는 개념만 남아있었던 것이다. 이것은 일부는 맞고, 일부는 틀린 얘기인데, spring 과 같은 컨테이너 환경에서 jpa 는 트랜잭션당 persistence context 를 가지고 있다. 즉, spring 환경 기준에서는 아래의 식이 맞으나 (OSIV 를 옵션을 끈 상태라면) , 다른 경우에는 아닐 수도 있다. transaction : persistence context = 1 : 1 만약 transaction 이 co.. 2024. 2. 18.