꼬물꼬물

[29강] 영속성 컨텍스트와 더티 체킹 / Update 본문

코딩/Blog

[29강] 영속성 컨텍스트와 더티 체킹 / Update

멩주 2022. 1. 24. 00:36

- 영속성 컨텍스트

모든 request는 Controller로 모여 response로 나간다.

Insert

Update

Delete

Select

 

JPA의 영속성 컨텍스트

Controller에서 user 객체를 save하면 JPA 영속성 컨텍스트의 1차 캐시에 user 객체가 들어가고(영속화) 이것이 DB에(flush) 들어간다.

flush: 버퍼에 데이터가 쌓아있다가 다른 곳(DB)에 저장하고 버퍼를 지운다.

=> BUT 1차 캐시에 있는 것을 지우지 않는다.

select할때 영속화 되어있는 객체를 먼저 찾는다. 이때 객체가 존재하면 굳이 DB에 가서 객체를 찾아오지 않고 바로 들고온다.  

 

update할 때, id에 해당하는 데이터를 DB에서 들고와서 1차 캐시에 영속화 시킨다.  그리고 controller로 들고온다. 

가져온 데이터를 변경한다.

 

더티 체킹

@Transaction은 해당 함수가 종료될 때 자동 commit을 한다.

바뀐 user와 영속화된 user를 비교해 변경이 있을 경우 controller 종료시에 자동으로 update를 실행해준다.

 

DB에서의 더티 체킹

- 다 쌓아놨다가 한번에 commit

JPA에서의 더티체킹

- 변경을 감지해서 update하는 것

'코딩 > Blog' 카테고리의 다른 글

[32강] 스프링 기본파싱전략와 json 통신  (0) 2022.01.24
[30강] Delete / Exception 처리하기  (0) 2022.01.24
[27강] select / update  (0) 2022.01.24
[26강] get/select  (0) 2022.01.21
[21~3 강] 연관관계 주인  (0) 2022.01.20