[JPA강좌, 영속성컨텍스트, PersistenceContext,스프링JPA강좌]
n EntityManager가 엔티티를 관리할 때 영속성 컨텍스에 보관하고 관리한다. 즉 현재 관리되는 모든 엔티티 인스턴스의 집합을 PersistenceContext라고 한다.
n EntityManager를 통해 접근 가능하며 EntityManager에 의해 관리되는 엔티티 컨테이너의 집합이다.
n JPA에서 영속성 컨텍스트에 엔티티를 보관할때 최초 상태를 복사해서 저장하는데 이것을 스냅샷이라 한다. 플러시 시점에 스냅샷과 엔티티를 비교해서 변경된 엔티티를 찾는다. (플러시란 영속성 컨텍스트의 변경 내용을 데이터베이스에 반영하는 것이다.)
n 자동변경감지 : 영속상태의 객체가 영속성 컨텍스트에서 관리되는데 이 영속상태의 객체의 어떤 속성이 변경됨을 자동감지하고 이를 영속성 컨텍스트에서 관리되는 객체와 동기화 한다. 이 영속객체는 작업단위가 종료되는 시점에 DB와 동기화 된다.
n 캐시 : 영속성 컨텍스트에서 관리하는 영속객체는 영속성 컨텍스트에서 모두 기억하는데 어떤 key를 기준으로 Entity 객체를 조회한 경우 DB의 실제 데이터를 조회 하기전에 영속성 컨텍스트 내부의 영속객체를 먼저 조회한다. 없는 경우에만 DB에서 조회하고 이를 반복 가능한 읽기라고 하며 성능상 이점이 있다.
n 객체동일성 : 자바와 DB쪽 모두 일치하는 경우 동일하게 간주한다. 즉 자바에서 “==“ 연산자로 비교했을 때도 같아야 하며 DB에서 key로 비교했을 때도 일치해야 동일하다는 것이다.
댓글 없음:
댓글 쓰기