본문 바로가기

영속성컨텍스트

JPA 영속성 컨텍스트의 1차캐시 & 쓰기지연은 정말 동작하는가? JPA는 엔티티를 영속성 컨텍스트에서 관리한다. 영속성 컨텍스트에 대한 장점을 다시 한번 살펴보면 다음과 같다. 1. 1차 캐시 2. 동일성 보장 3. 트랜잭션을 지원하는 쓰기 지연 4. 변경 감지 이러한 영속성 컨텍스트의 장점은 많이들 접해보고 들어봤을 것이다. 이 글에서는 1차캐시와 쓰기지연에 대해서 좀 더 자세히 알아보도록 한다. 1차 캐시 1차 캐시가 되는 것은 오직 식별자로 쿼리할 때만이 가능하다. 식별자가 무엇인가? 바로 @Id 어노테이션을 붙여둔 Key이다. 다음 예제를 살펴보자. Person(id = 1, name = "A") 위와 같은 Entity가 DB에 저장되어 있다고 가정해보자. 여기서 다음과 같이 쿼리를 하면 어떤 일이 발생할까? val p1 = repository.findByNa.. 더보기
JPQL과 영속성 컨텍스트 스프링 웹 프로젝트를 작업할 때, 온전히 JPA만으로 작업하기에는 어려움이 따를 수 있다. 예를 들어, 테이블 중 특정 필드만이 필요한데, JPA로 모든 필드를 메모리에 올리기에는 비효율적인 문제등을 들 수 있을 것이다. JPQL과 JPA를 조합해서 쓸 때 몇가지 주의할 점과 동작하는 방식에 대해 알아본다. 먼저 JPQL의 개념을 간단하게 다시 한번 살펴보자. JPQL JPQL은 SQL과 비슷한 문법을 가진 객체 지향 쿼리이다. JPQL의 탄생 배경은 JPA에서 제공하는 메서드 호출만으로 섬세한 쿼리 작성이 어렵다는 문제로부터 비롯되었다. JPQL로 조회한 엔티티와 영속성 컨텍스트 JPQL로 엔티티를 조회하면 해당 엔티티는 영속성 컨텍스트에서 관리된다. 하지만, 엔티티가 아니라면 영속성 컨텍스트에서 관리.. 더보기