Skip to content

☀️ 각 도메인 모델의 ID 타입을 호환 가능한 타입으로 수정합니다. #111

@merge-simpson

Description

@merge-simpson

이슈 내용

도메인 모델의 ID 타입을 String 등 호환 가능한 타입으로 수정합니다.
이때, 드리븐 어댑터 중 일부는 문자열 아이디를 영속성 엔티티의 아이디 타입으로 변환해야 합니다.

  • [SUB-ISSUE] Board의 도메인 ID 타입을 String으로 수정합니다.
  • [SUB-ISSUE] Article 및 Draft의 도메인 ID 타입을 String으로 수정합니다. (참조된 필드 포함)
  • [SUB-ISSUE] Views에서 참조된 도메인 ID 타입을 String으로 수정합니다.
  • [SUB-ISSUE] Comment 및 Reply의 도메인 ID 타입을 String으로 수정합니다.

부연 설명

ID 타입에 대한 관심사 위치

🦜 도메인 및 애플리케이션 레이어는 ID의 타입을 결정하지 않습니다.

도메인 모델을 다룰 때, ID의 값을 직접 다루거나 해석하지 않습니다. (Only 전달)

  • 도메인 모델의 ID: 어댑터 간 아이디 교환을 위한 전달자 역할
  • 영속성 엔티티의 ID: DB 조작에 필요한 정보

🕊 스프링은 파싱 과정에서 이미 문자열로 전달받습니다.

예를 들어 서버가 사용자 요청 메시지를 전달받을 때, jackson 등 파싱·직렬화 라이브러리는 일반적으로 다음 프로세스를 거친다고 생각합니다.

  1. 아이디를 문자열로 해석합니다. (parsing)
  2. 이 문자열을 원하는 타입으로 변환합니다. (converting)

따라서 이미 String 상수풀 등에 해당 문자열 인스턴스가 생성되어 있는 것으로 기대합니다.
이를 재사용하는 것뿐이므로 문자열 취급에 따른 성능 저하 요인은 별로 크지 않습니다.


참고
DB에서 문자열 아이디는 샤딩 전략 등에 최선의 선택지가 아닐 수 있습니다.
DB의 아이디 타입은 팀별 운영 전략에 알맞은 방식을 사용하고, 애플리케이션 사이드에서 문자열 타입 아이디를 사용합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    in: articleIssues in the article modulein: boardIssues in the board modulein: commentIssues in the comment modulestatus: req-assign작업하기로 결정되었으나, 작업자 할당이 필요함. Issues that have been decided to accept but are not assignedtype: feature새로운 기능 또는 기능적 개선 A new feature or enhancement

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions