프레임워크/Spring, Spring Boot

[메타코딩] 스프링부트 강좌 29강(블로그 프로젝트) - 영속성 컨텍스트와 더티체킹

고용인 2022. 7. 28. 15:22

더티체킹

 

- 영속화 되었다 : Request에 의해 Controller에서 User객체를 Save 할때 JPA내의 영속성 컨텍스트내의 1차캐시에 해당 객체가 생성되는것을 말합니다.

 

- flush : 영속화 된 객체를 DB에 밀어넣는 행위를 말합니다.(버퍼를 비운다라고 말합니다.)

간단한 예로 어떤 창고에 있는 물건들을 더 큰 창고로 옮기는 행위라고 말 할 수 있습니다.

 

특징으로 flush긴 flush지만 이때 1차캐시에 있는 객체를 지우지는 않습니다.

 

- 더티체킹의 동작원리

메소드 상단에 Transactional 어노테이션을 선언한 이후, 2번 id를 가진 객체를 update를 하고 싶어 호출하였다고 가정합니다. 그러면, DB에서 2번 id를 가진 데이터를 JPA  영속성 컨텍스트에 객체를 영속화를 시키며, 컨트롤러의 user객체에 영속화 된 객체를 넣습니다.

이후, 컨트롤러의 user 객체의 값을 변경하고 해당 메소드가 끝나게 되면 영속성 컨텍스트 내의 user 객체와의 차이를 판단하여 자동으로 commit을 합니다.

 

 

해당 강의에 대한 자세한 설명은 강의 하단 댓글에 잘 정리되어있습니다. 참고하시면 좋을 듯 합니다.

 

 

강의 주소 : https://youtu.be/dDsI1J4QC6g