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를 선언하고 쓸 필요가 없다.
'개발 공부' 카테고리의 다른 글
JPA 기본 개념과 영속성 컨텍스트 (0) | 2025.02.25 |
---|---|
Spring과 객체 지향 (0) | 2025.02.25 |
커뮤니티 피드(3) - 테스트 작성 (1) | 2025.02.13 |
커뮤니티 피드(2) - Post 도메인 개발 (1) | 2025.02.13 |
커뮤니티 피드(1) - User 도메인 개발 (1) | 2025.02.12 |