본문 바로가기

Spring

오늘의 질문 : JPA 엔티티 수정 방식

Q. jpa에서 조회한 엔티티를 업데이트할 때 실무에선 어떤 방식으로 업데이트하시는지 궁금합니다.
1. 엔티티 내부에 id를 제외한 모든 파라미터를 받는 수정자 메서드를 생성
2. builder로 객체를 clone하고, 빌더를 이용한 수정자 메서드 생성
3. 업데이트할 필드의 내용으로 새 엔티티를 생성하고, id를 복사

 

불변, 신뢰성때문에 되도록이면 수정자 메서드를 넣지 않고, 식별자를 copy하여 객체를 새로 만드는 방식을 생각했었는데, 답변을 보니 생각이 달라졌다.

 

고찰 :

1. 도메인 로직에 수정 메서드를 넣고, 수정하는 책임을 지게 하는게 깔끔하다.

2. 불변이 꼭 만능은 아니며, jpa의 엔티티 논리적 동치관계는 ID로 하기 때문에, 굳이 새로만들어서 불변성 보장을 시도하지 않아도 된다.

3. 여기서 책임이란 파라미터의 검증 또한 수정자 메서드에 하는 것도 포함한다.