본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타코딩클럽 내일배움캠프 7주차2일

728x90

1. 캐시 와 쿠키

캐시 웹페이지가 빠르게 랜더링 할 수 있도록 도와준다. 쿠키는 사용자의 인증을 도와준다.

 

2. 영속성 컨텍스트 : 엔티티를 영구 저장하는 환경.

 

3. JPA 엔티티 상태

 

3-1 비영속 : 해당 객체의 데이터가 변경되거나 말거나 실제 DB의 데이터와는 관련없다. 그냥 자바 객체인 상태

 

3-2 영속 : 엔티티 매니저를 통해 엔티티가 영속성 컨텍스트에 저장되어 관리되고 있는 상태. (JPA가 계속 상태를 갱신함)

 

3-3 준영속 : 영속성 컨텍스트에서 관린되다가 분리되서 비영속이 되는 상태

 

4. flush라는것은 영속성 컨텍스트에 새로 저장된 엔티티를 DB에 저장.

 

영속성 컨텍스트의 설계 구조

1. 1차 캐시라는 것을 가지고 있다.

find(B) 1차 캐시에 없음 (1차캐시에서 찾음: 영속성컨텍스트) ->  DB조회 ->  1차 캐시에 저장 ->  반환

 

2. 쓰기 지연 SQL 저장소가 있다.

commit() method를 호출 -> 쓰기지연 SQL 저장소에 모아둠 -> flush로 쓰기지연 저장소에 쌓인 SQL문을 DB로 흘려보냅니다. -> commit명령을 통해 방금 흘려보면 SQL문을 DB에 반영시킵니다.

 

3. Dirty Checking을 통해 데이터의 변경을 감지해서 자동으로 수정

아까 flush가 되던 시점에는 JPA가 조회시점에 데이터와 영속화한 엔티티 객체를 비교합니다. -> 변경이 감지된 부분을 DB에 반영시킬 수 있는 SQL UPDATE문을 쓰기지연 저장소에 몰래 넣어놓은 상태였죠

 

4. 데이터의 어플리케이션 단의 동일성을 보장해줍니다.

 

728x90