[SPRING] 'save' vs 'saveandflush'

CHOI IN HO·2023년 12월 20일
0

SPRING

목록 보기
27/45

preview

우리가 service단에서 db를 저장하다보면 save를 사용하는 경우가 있고 saveandflush를 사용하는 경우가 있다. 둘의 차이점을 알아보자.

이를 위해하기 위해선 먼저 JPA의 영속성에 대해서 알아두어야한다.다음 포스트를 참고

https://velog.io/@codren/JPA-개념-및-원리

repository.save

save() 메소드는 바로 DB 에 저장되지 않고 영속성 컨텍스트에 저장되었다가 flush() 또는 commit() 수행 시 DB에 저장됨

repository.saveAndFlush

적혀있는 그대로 해석하자면, 즉시 DB에 변경사항을 적용하는 방식이다.

save()메소드와는 다르게 실행중(트랜잭션)에 즉시 data를 flush한다.

repository.saveAndFlush 사용시기

아직 commit되지 않은 같은 트랜잭션 내에서 먼저 처리된 결과를 후에 사용될 때 사용한다.
예를 들어, 우리가 저장할 예정인 entity의 속성을 기대하는 스토어드 프로시저가 실행되어야 될때 save() 메소드는 db동기화 시키지 않았기 때문에 변경사항 알 수 없고, 동작하지 않는다.

profile
개발자기 되기 위해선 무엇이든!

0개의 댓글