개발 지식

Spring Boot에서 save 메소드의 동작 원리

dm.kim 2020. 12. 7. 14:55

entity 가 이미 영속성에 등록 되있으면 merge를 없으면 persist 를 실행하게 돼있다.

merge 는 해당 ID 가 영속성에 존재하면 update 를 수행. 없으면 INSERT 를 수행한다.

여기서 주의할 점은 ID 가 없을 경우 SELECT 를 시도하는 경우가 있을 수 있다는 것.

기본키 생성 전략이 없을 경우 (애플리케이션에서 생성) SELECT 를 수행한 후, INSERT 를 실행하기에 쿼리가 2배로 실행됨.

persist 의 경우 INSERT 쿼리만 실행 됨.

즉, 정리하면 merge 는 기존의 객체가 존재할 경우 사용하면 좋고, persist 는 새로운 객체를 생성할 때 좋음.



출처 : https://insanelysimple.tistory.com/155