Domain & Infra model separation
· 7 min read
이 문서는 TestDomainItem
을 예시로 하여, 도메인 모델과 MongoDB용 인프라 모델을 분리하는 과정을 단계별로 정리한 것입니다.
각 단계에서는 선택된 구조의 장단점 및 고려할 트레이드오프도 함께 포함되어 있습니다.
✅ Step 1: 도메인 모델에 MongoDB 어노테이션 직접 사용
import org.springframework.data.annotation.Id
import org.bson.types.ObjectId
data class TestDomainItem(
@Id val id: ObjectId? = null,
val itemSequence: String,
val itemName: String
)
장점
- 가장 간단하고 빠르게 개발 가능
- Spring Data MongoDB의 자동 매핑 지원
단점 및 고려사항
- 도메인 모델이
spring-data-mongodb
,bson
등에 직접 의존 - 테스트, 비즈니스 로직에서 순수 모델로 보기 어려움
- 향후 DB 마이그레이션(R2DBC, JPA 등) 시 강하게 coupling 됨
✅ Step 2: @Id
제거 후 _id
필드만 선언
data class TestDomainItem(
val _id: ObjectId? = null,
val itemSequence: String,
val itemName: String
)
장점
- 어노테이션 제거로 약간의 순수성 향상
- MongoDB
_id
필드에 자동 매핑됨