소프트웨어에서 DB 테이블 보다 도메인이 적을 수 있을까요?
- 도메인은 여러 테이블로 구현될 수 있으므로, 테이블 수가 도메인 수보다 많을 수 있음 🧩
- 브랜드가 태그 수준의 부수 정보라면 도메인으로 격상하지 않아도 됨. 제품 검색용 태그처럼 활용 가능 🏷️
- 제품-브랜드 관계 설정 시, 브랜드 추가/매핑을 별도 기능으로 분리할 수 있음. 제품에 항상 브랜드가 필수적인 것은 아닐 수 있음 🔗
- 도메인 모델에서 중간 객체 (예: ProductBrand) 없이 Product와 Brand 객체만으로 관계를 관리하는 것이 가능할 수 있음. 불필요한 객체 생성을 줄임 ✂️
- 객체 수가 테이블 수와 반드시 일대일 대응될 필요는 없음. 비즈니스 로직에 필요한 객체만 도메인으로 간주해야 함 🎯
- Product와 Brand의 위계를 명확히 정의하고, 이를 바탕으로 어떤 객체가 관계 설정을 담당할지 결정해야 함. 개념적 중요도에 따라 설계가 달라짐 ⚖️
- 도메인 모듈을 인터페이스로 추상화하여, 엔티티별 리포지토리가 아닌 통합 리포지토리를 통해 관리할 수 있음. 코드 구조의 유연성을 확보 🧰
- 제품 추가 시 브랜드 정보가 항상 필요한 것은 아닐 수 있으며, 브랜드가 없는 제품(예: 보세)도 존재할 수 있음. 비즈니스 규칙을 고려해야 함 👚
- ProductBrand 객체가 반드시 도메인으로 간주될 필요는 없으며, Product와 Brand 객체만으로 관계를 표현할 수 있다면 불필요한 도메인 객체 생성을 피해야 함 🚫
- 브랜드 추가를 Product 도메인에서 처리하는 대신, 별도의 브랜드 관리 기능을 제공하는 것이 더 적절할 수 있음. 책임 분산 및 응집도 향상 ⚙️