생성과 수정은 서로 다른 DTO 수명주기를 가진다

Create는 완전한 초기 상태를 요구하고 Update는 필드 부재와 명시적 null을 구분한 뒤 같은 domain invariant로 합류한다.

Create lane · 새 상태 구성
INPUT

필수 필드

초기 상태에 필요한 값을 모두 받는다.

COMMAND

Create command

생성 권한과 기본값을 확정한다.

Update lane · 기존 상태 변경
INPUT

부분 필드

없음과 null의 의미를 분리한다.

COMMAND

Update command

변경 권한과 patch 의미를 고정한다.

변경 후 domain invariant를 만족하는가?
YES

Domain 반영

Create와 Update 모두 같은 업무 규칙을 통과한다.

NO

업무 오류

현재 상태와 충돌한 입력을 저장하지 않는다.

핵심: DTO를 공유해 코드 수를 줄이는 것보다 각 요청에서 ‘필드가 존재한다’는 뜻을 보존하는 것이 중요하다.