나의 개발 성장일지
영속성컨텍스트와 더티체킹 본문
https://ict-nroo.tistory.com/130
[JPA] 영속성 컨텍스트와 플러시 이해하기
영속성 컨텍스트JPA를 공부할 때 가장 중요한게객체와 관계형 데이터베이스를 매핑하는 것(Object Relational Mapping) 과영속성 컨텍스트를 이해하는 것 이다. 두가지 개념은 꼭 알고 JPA를 활용하자.
ict-nroo.tistory.com
1.더티체킹
1-1 USER정보를 수정후 DB에 Save함수를 호출하지않아도 @Transactional을 붙이니 수정됨

2.영속성 컨텍스트와 더티체킹의 원리
3. 영속성 컨텍스트의 원리
3-1 Jpa가 영속성컨텍스트를 갖고있음
3-2 컨트롤러에서 user를 save-> 영속성컨텍스트에 user를 1차캐시저장(영속화) ->COMMIT전상태
3-3 영속화된객체를 ->DB에 저장하기 ->플러시(1차캐시비우지않음)
3-4 select시 영속화된 user를 가져와 db에 접근 x
3-5 update시 일단 select로 2번데이터를 1차캐시로가져와 영속화시킨다.
3-6 영속화된 2번데이터를 컨트롤러로 가져와 변경
3-7 save시 영속화된 2번데이터를 변경해줌
3-8 변경된 데이터를 플러시해서 db에 저장

4. 트랜잭션과 영속성컨텍스트
4-1 컨트롤러에 updateuser메소드에 @Transactional을 붙이면 트랜잭션처리를한다.
4-2 메소드가 종료되어 return할때 트랜잭션이 종료되고 자동 Commit이된다.
4-3 영속화된 User를 컨트롤러로 가져와서 변경시키고 함수종료하면 Commit이되고
영속화된객체와 컨트롤러에 수정객체를 비교하여 자동으로 인식하고 업데이트를 해준다
4-4 트랜잭션 메소드종료시 영속화된객체의 변화를 인지하고 DB에 업데이트문을 수행해준다.(더티체킹)
4-5 영속화된객체를 변화없이 메소드가 끝나고 COMMIT이된다면 그대로 DB에들어감

'개인 공부 > 스프링부트 개념정리' 카테고리의 다른 글
예외처리페이지만들기 (0) | 2022.11.23 |
---|---|
쓰레드와 프로세스정리 (0) | 2022.11.22 |
Crud 테스트 2 (0) | 2022.11.21 |
DB 칼럼과 Enum제약조건 (0) | 2022.11.21 |
테이블 연관관계의 주인(보완필요) (0) | 2022.11.20 |