피드로 돌아가기
Is it a good practice to use a single Builder pattern for both Creating and Updating an entity?
Dev.toDev.to
Backend

Entity 상태별 검증 로직 분리를 통한 Type-Safe Builder 설계

Is it a good practice to use a single Builder pattern for both Creating and Updating an entity?

Juan Jose Yamunaque Castillo2026년 5월 27일1intermediate

Context

Node.js 기반 Backend 시스템에서 Permission 객체 생성을 위한 단일 Builder pattern 적용 중 발생한 제약 사항 분석. Create 시 필수 값과 Update 시 필수 값(ID)이 상충하며, 필드별 선택적 업데이트(Partial Update) 구현을 위한 유효성 검사 로직의 충돌 발생.

Technical Solution

  • CreatePermissionBuilder와 UpdatePermissionBuilder로 역할을 분리하여 단일 책임 원칙(SRP) 준수
  • Create 시 name과 module을 Mandatory로 설정하여 데이터 무결성 보장
  • Update 시 ID를 Mandatory로 지정하고 나머지 필드를 Optional로 처리하는 조건부 검증 로직 설계
  • Partial Update 구현을 위해 제공되지 않은 필드를 null 또는 undefined로 유지하는 상태 관리 방식 채택
  • 빌드 시점(build method)에서 각 액션에 특화된 유효성 검사 런타임 체크 수행
  • 도메인 엔티티의 생명주기에 따른 Builder 분리를 통한 컴파일 타임 타입 안정성 확보

- 생성과 수정의 필수 필드가 다를 경우 단일 Builder보다 역할별 분리된 Builder 설계 검토 - Partial Update 시 덮어쓰기 방지를 위한 필드 존재 여부(Presence) 체크 로직 구현 - Builder 내부에 비즈니스 유효성 검증 로직을 포함하여 Repository 레이어로 전달되는 데이터의 정제 수준 향상

원문 읽기