Model Define
- Entity
- required
- Table 과 mapping 되는 model
- DB table 원형 데이터
- column validation 은 필요시, 최소한으로 구성
- not null
- length
- BaseEntity 구현
@DynamicUpdate- 쿼리 성능에 영향
-
@MappedSuperclass
- @EntityListeners(AuditingEntityListener.class)
- Serializable 구현
- DTO
- required
- data transper object : https://en.wikipedia.org/wiki/Data_transfer_object
- Entity 와 DTO는 1:N 관계.
- 1:1 mapping 되는 기본 DTO는 꼭 만들어야한다.
- service, controller layer 의 입력/반환 model 이 될 수 있다.
- service to controller : DTO model 이 전달 되어야 한다.
- service to service : Entity + DTO model 로 전달이 가능하다.
- 해당 model은 data를 가진 형태로 구성한다.
- 대부분의 validation 로직을 가져야 한다.
- BaseDTO, converter 구현
- to converter 구현 : DTO → Entity
- model mapper 를 기본적으로 사용한다
- custom 주입이 필요한 경우는 model mapper 변환 후, 주입
- Serializable 구현
- to converter 구현 : DTO → Entity
- package 위치
- entity와 같은 패키지
- 하위 model 패키지
VOoptionalview objectcontroller 에서 view 에 최적화 된 modelDTO → VO 형태로 converter 처리를 해야 한다.package 위치: controller/modelconverter 구현DTO class의 of 나 to 메소드 구현spring converter 를 상속구현
-
API
- 자체 API 와 외부 API 연동 모두 포함 된다.
- Request
- optional
- api 요청 model
- DTO model 과 입력 model 이 달라지는 경우, request model 를 정의 한다.
- 다만, DTO가 충분히 입력 model 를 cover 가능하면, DTO를 쓸 수 도 있다.
- package 위치
- controller/model
- Response
- optional
- api 응답 model
- DTO model 로 충분히 응답결과 표현이 불가능한 경우, Response model 를 정의 한다.
- package 위치
- controller/model
- Naming
- Model Naming
- Api
- Response -> API 의 최종 결과
- Response 의 하위 모델이 존재하는 경우는?
-
- 원칙적으로는 innerclass로 사용한다.
- 별도 class로 분리할때는 VO postfix를 사용한다. (클라이언트에 전달할때는 postfix를 제거한다.)
- Support
- Entity 유지
- DTO 유지
- ETC
-
model mapper 를 기본적으로 이용한다.
-
반응형
'emotional developer > detect-Java' 카테고리의 다른 글
Springboot versionup 2.0.6 -> 2.1.3 (0) | 2020.10.19 |
---|---|
test reference (0) | 2020.03.02 |
spring cloud config git 임시파일 저장소 변경. (0) | 2017.10.30 |