영속성 context, delete

HakJun·2022년 2월 17일
2

SpringBoot_JPA_BlogProject

목록 보기
10/25

영속성 컨테스트

컨트롤러에서 User객체에 save하면, jpa의 영속성컨테스트의 1차캐시에 User객체가
쌓인다. 영속화 되었다고 한다.
그리고 DB에 flush한다. 값을 저장한다.
예로 4번을 select하면 영속화되어있는지 체크, JPA 캐시에서 추출해간다. DB까지 가지 않음

또다른 예로 2번 데이터 업데이트 한다면, DB에서 2번 데이터를 가져와서 JPA 1차캐시에 영속화 시킴, 호출 시킨부분에 2번 데이터를 가져감, 변경한값으로 update, 이후 save를 호출

update User method 가 종료될 때 transcation 이 종료 , return할 때, 함수 종료시에 자동 commit이 됨

DirtyChecking : 영속화된 데이터가 update등으로 수정이되면 영속성 컨텍스트가 이를 transaction 으로 감지하여 DB에 update를 해준다.

삭제하기 테스트
DirtyChecking update 테스트


DB에서도 DirtyChecking 이 존재 , commit하는것들을 모아놓았다가 한꺼번에 commit하는것을 의미, Spring에서는 Transaction으로 변경을 감지하는 것을 의미.

더미데이터 Delete하기
삭제될 파라미터가 없으면 EmptyResultDataAccessException를 발생시킴, 예외처리

profile
백엔드 & 전공 공부

0개의 댓글