본문 바로가기
자바의 봄(Spring)/자바와 스프링 공부하기

JPA란 무엇인가 ?

by 종안이 2024. 4. 20.

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에서 관리를 안하는 상태 

댓글