JPA에서 delete, insert 시 왜 insert 쿼리가 먼저 실행될까?
·
Spring/JPA
0. 들어가기 전JPA를 사용해서 개발하던 중에 예상과 다르게 동작하는 테스트를 발견하게 되었습니다. Update 로직을 delete, insert로 구현했는데 delete 후 insert가 되는 것이 아니라, insert 후 delete로 동작하는 것을 확인했습니다. 왜 이러한 쿼리 순서로 실행되는지 상황부터 원인, 해결방법까지 살펴보도록 하겠습니다!1. 문제 상황먼저 기본 컨텍스트를 알려드리면 다음과 같습니다.Job - Skill 1:N이지만, 연관관계는 맺지 않고 JobId로 간접 참조Skill의 update 로직 메소드에서 상황 발생/** * DELETE & INSERT */@Transactionalpublic void replaceUpdateByJobId(Collection skills, Str..
BE_성하