본문 바로가기

개발 공부

영속성 컨텍스트 특징

1. 특징

  • 영속 상태의 객체는 Id(식별자) 값이 반드시 있음
  • Id를 기준으로 1차 캐시에서 엔티티 값을 반환해 준다
  • 1차 캐시
    • id가 2인 유저를 조회할 때 1차 캐시에서 존재하지 않을 경우 db에서 조회
    • 조회된 값을 1차 캐시에 저장
    • 다시 id가 2인 유저를 조회하면 1차 캐시에 있는 내용을 반환해줌
    • 이로써 db 접근을 최소화하고 효율적으로 접근할 수 있도록 도와줌
  • 쓰기 지연(id가 있을경우)
    • 트랜잭션 시작
    • 두 개의 멤버 객체를 persist
    • 두 개의 sql 문과 1차 캐시에 저장이 됨
    • 이후 커밋을 할 때 저장된 2개의 sql문이 한번에 db로 요청이 됨
  • 동일성 보장
    • 항상 같은 값을 반환해줌
    • 실제 메모리 주소도 같은 객체
    • 따라서 db 조회를 하지 않아도 되는 성능 향상의 이점이 있음
  • 변경 감지
    • 엔티티 매니저가 영속성 컨텍스트에 커밋 요청
    • 엔티티 매니저가 내부에서 수정된 엔티티 검색
    • 엔티티 매니저 내부에서 수정된 엔티티 쿼리 문 추가
    • 쓰기 지연 장소에 추가
    • sql문을 db로 보내고 이후 트랜잭션을 커밋 시켜 변경사항들을 자동으로 감지하고 저장

2. Spring Data Jpa

JPA를 사용하기 쉽게 만들어 놓은 Spring에서 제공하는 모듈 직접 Hibernate에서 구현한 EntityManager를 선언하고 쓸 필요가 없다.