엔티티 매니저는 트랜잭션 별로 생성된다(스프링 기본). 엔티티 매니저는 영속성 컨텍스트를 가지고 있고 1차 캐시의 역할을 하게 된다. 이로 인해 애플리케이션 수준의 반복 가능한 읽기가 가능하다(DBMS의 Repeatable Read와 별개로). 이를 위해 엔티티매니저를 통해 읽기를 할 때 1차 캐시에 이미 해당 영속성 객체가 있다면 DB에서 조회하지 않고 이를 반환한다. 또한, JPQL을 통해 쿼리를 하면 영속성 컨텍스트를 확인하지 않고 바로 DB에서 가져오는데 가져온후에 영속성 컨텍스트에 이미 해당 객체가 있다면 DB에서 가져온 객체를 버리고 영속성 컨텍스트에 있는 값을 반환한다. 영속성 컨텍스트에는 1차 캐시와 쓰기 지연 SQL 저장소가 있다. flush를 할 때 쓰기 지연 SQL에 있는 쿼리가 발생..