1. JPA의 정의
2. JPA에서 중요한 영속성 컨텍스
- 영속성 컨텍스트
영속성 컨텍스트는 엔티티를 영구 저장하는 환경
- 영속성 컨텍스트의 이점
1. 1차캐시
- 1차 캐시에서 Key Value 값으로 저장이 됩니다.
- find로 찾으면 캐시에서 조회를 하게 된다.
- 조회를 했는데 select 쿼리가 안나갔다. 왜냐하면 캐쉬에서부터 먼저 조회를 했기 때문에
2. 동일성 보장
- DB에서 한번 조회하고 , 다시 조회를 한다면 같은 객체라고 본다.
3. 트랜잭션을 지원하는 쓰기 지연
- 쓰기 지연 SQL 저장소와 1차 캐시가 존재한다.
- 영속성 컨텍스트에서 flush를 하게 되면 저장이 된다.
- 버퍼링을 모아서 커밋을 할 수 있는 이점이 있다. ( 모아서 저장 할 수 있다.)
4. 엔티티 수정 ( 더티 체킹 )
- 변경 감지
- 커밋을 하면 내부적으로 플러쉬가 호출되며 , 엔티티와 스냅샷을 비교한다.
- 1차 캐시는 스냅샷이라는게 존재한다. 커밋되는 순간 스냅샷과 엔티티를 비교하여 업데이트 쿼리를 생성한다.
- 쓰기 지연 SQL 저장소에 저장하고 flush 되고 커밋하며 저장된다.
5. 플러시는
- 영속성 컨텍스트를 비우지 않음
- 영속성 컨텍스트의 변경내용을 데이터베이스에 동기화
- 트랜잭션이라는 작업 단위가 중요 -> 커밋 직전에만 동기화 하면
6. 준영속 상태
- detach 상태 JPA에서 관리를 안하는 상태
'자바의 봄(Spring) > 자바와 스프링 공부하기' 카테고리의 다른 글
양방향 연관 관계 (0) | 2024.04.21 |
---|---|
UserDetailsService와 UserDetails에 대해 (0) | 2024.04.01 |
JPA에서 인덱스 생성하기 (0) | 2024.03.23 |
@Builder 패턴을 쓰는 이유 (0) | 2024.03.09 |
HttpServletRequest (0) | 2024.02.05 |
댓글