더티 체킹

    JPA - 엔티티 수정(merge, dirty check)에 대한 내용 정리

    JPA(Java Persistence API -> Jakarta Persistence API)를 사용할 때 엔티티를 수정해야 할 때 아래처럼 2가지 방법이 있다. 병합(merge) 변경 감지(Drity checking) 아주 간단하게 정리하자면 "병합"은 수동, "변경 감지"는 자동이라고도 볼 수 있다. 사실 두 방법에 대한 중요한 차이점은 직접 명시하니 자동으로 해주니가 아닌 "어떻게 동작하는가?"라고 볼 수 있다. 일단 병합을 사용한 엔티티 수정에 대해 정리해보자 병합(merge) 병합의 경우 수정된 엔티티를 직접 merge() 메서드를 통해 반영시킨다. 이 때 엔티티의 모든 속성을 갱신하게 되기 때문에 비어있는 속성이 있는 경우 Null이 DB에 반영 될 수 있다. 병합을 사용해야 하는 경우는 준영..