각 계층의 모델을 매핑하는 방법
논쟁
- 매핑에 찬성
- 양 계층에서 같은 모델을 사용하게 되면 두 계층이 강하게 결합된다.
- 매핑에 반대
- 보일러플레이트 코드: 상용구 코드 또는 단순히 상용구는 거의 또는 전혀 변형 없이 여러 위치에서 반복되는 코드 섹션
- 많은 유스케이스가 CRUD만 수행하고, 같은 모델을 계층에 걸쳐서 사용한다.
결론
- 각 유스케이스마다 적절한 전략을 택할 수 있어야 한다.
- 어떤 매핑 전략을 선택했더라도 나중에 언제든 바꿀 수 있다.
- 여러 가지 매핑 전략을 섞어쓸 수 있고, 섞어 써야만 한다.
8-1. ‘매핑하지 않기(No Mapping)’ 전략
웹, 애플리케이션, 도메인, 영속성 계층이 모두 같은 모델 사용
Account
도메인 모델
- 웹 계층: 필드에 모델 ↔ JSON 직렬화, 역직렬화하기 위한 애너테이션 필요 ex>
@NotNull
, ..
- 영속성 계층: 데이터베이스 매핑을 위한 애너테이션 ex>
@Entity
, @Id
, @Column
, …
- 애플리케이션, 도메인 계층: 위 요구사항들이 필요없음에도 가지고 있어야 한다.
단점