패키지 객체 도메인 가이드
참조: https://github.com/cheese10yun/spring-guide/blob/master/docs/domain-guide.md
domain
패키지 명칭은 entity 혹은 domain 으로 표기하며
온전히 DB 처리용으로 DB 테이블 컬럼과 완전 동일한 객체의 클래스를 관리하는 package
domain 객체는 반드시 DB 처리용으로만 사용해야 한다
* 주의 - 어쩔수 없는 경우를 제외하고는 domain 패키지의 객체를 DB 처리 이외에 사용하면 안되며
domain 객체에 **DB 컬럼 에 없는 컬럼을 추가하는 것도 권장하지 않는다
되도록이면 DB 컬럼과 동일하게 유지하기를 권장**
dto
https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html
백오피스팀에서는 공식적으로 정의된 의미와 조금 다르게 사용한다
dto는 API 내부에서만 사용하도록 하고 외부와의 통신은 packet으로 분리해서 쓰는 것이 더 깔끔해 보이므로
백오피스팀 벡앤드 API 는 아래와 같이 dto를 정의하여 사용한다
API 서버 내에서 데이터 주고 받고 처리할떄 사용하는 dto 객체
JPA를 사용하지 않는다면 dto 객체로 DB 처리를 해도 무관하다
DB 컬럼과 동일 하지 않아도 되며 아래와 같이 domain 객체를 상속 받아서 사용 해도 된다
객체 생성시 suffix
로 Dto
추가
dto객체 생성시 반드시 suffix 로 Dto 를 추가하여 해당 객체가 dto 객체임을 명시
dto 객체 작성예시
dto 객체 overloading
dto 객체를 오버로딩 하여 packet 객체나 다른 객체의 데이터를 Mapping 한다
model
주로 다른 객체에서 공통적으로 사용되는 객체를 model 패키지로 구분하여 관리한다
아래와 같이 model의 Address 객체를 domain 객체에서 사용하는 것과 같이 어디에 속하지 않고 공통적으로 사용할 수 있거나 처리해야되는 객체들을 관리하는 용도로 사용한다
model 패키지에 정의된 Address 객체
domain 객체에서 사용
아래와 같이 domain 객체나 여타 다른 객체에서 공통적으로 사용할 수 있다
packet
packet 객체는 외부에 API를 제공하기 위한 외부 통신 전용 객체이다
Swagger API Docs 로 사용하는 파라메터에 대한 API Spec만을 표시하기 위해 API에 제공되는 파라메터들만 추가하여야 한다
단순한 API 서비스의 경우 packet 객체를 API 내부에서도 사용하며 DB 처리 용도로 까지 사용할 수 있다
객체 생성시 prifix
추가 ( 요청(Req
), 응답(Res
) )
요청(Req)인지 응답(Res)인지 구분할 수 있도록 반드시 prifix로 Req, Res 붙여야 한다
Res 객체에 DB 처리 결과를 담아서 리턴
Res 객체에 DB 처리 결과를 담아서 외부 요청에 응답할 수 있도록 한다
set으로 Jooq fetchInto의 값을 변환하여 셋팅할 수 있다
Swagger API Docs 정보 설정
https://springfox.github.io/springfox/docs/current/#overriding-descriptions-via-properties
외부 제공용 객체이므로 Swagger API Docs 에 올바른 정보가 나올 수 있도록 셋팅을 해야 한다
@ApiModel
- 설정된 명칭으로 Swagger API Docs Model 정보에 표시된다@ApiModelProperty
- 제공되는 파라메터 명과 파라메터 정보를 설정할 수 있다value
- Swagger API Docs에 설정된 명칭으로 파라메터 명이 표시된다부가 설명 표기도 이곳에 하면 좋다 \n을 통해 줄 변경을 할 수 있다
name
- 지정된 형태로 Swagger API 파라메터가 변경된다 camel 표기 형태의 파라메터 변수를 snake 표기 형태로 변경하는 용도로 사용notes
- 파라메터에 대한 추가 상세 정보를 기록하는 용도example
- 지정된 값을 예제 값으로 사용한다
GET
처리 packet 객체
@ParamName
- GET
방식으로 처리시 어떠한 파라메터 명으로 받을 지 지정한다
아래와 같이 camel 표기 형태의 파라메터를 @ParamName
을 설정하여 snake 표기 형태로 파라메터를 받도록 설정할 수 있다
POST
처리 packet 객체
https://github.com/FasterXML/jackson-annotations
@JsonProperty
- Jackson Library에서 제공되는 어노테이션 POST
방식으로 처리시 어떠한 파라메터 명으로 받을 지 지정한다
@JsonInclude
- Json 객체를 어떤 방식으로 받을 지 지정할 수 있다JsonInclude.Include.ALWAYS
- (기본값) 항상 모든 파라메터를 받는다JsonInclude.Include.NON_EMPTY
- 빈 값을 제외한 파라메터만 받는다JsonInclude.Include.NON_NULL
- null 값을 제외한 파라메터만 받는다
아래와 같이 camel 표기 형태의 파라메터를 @JsonProperty
를 설정하여 snake 표기 형태로 파라메터를 받도록 설정할 수 있다
'프로젝트' 카테고리의 다른 글
[SpringBoot test] Sample API 및 Sample 객체 코드 (0) | 2020.06.20 |
---|---|
[SpringBoot test] BaseTest 클래스 사용 가이드 (0) | 2020.06.20 |
[SpringBoot 에러알람] Application Logback 파일에 연동 URL 적용하기 (0) | 2020.06.20 |
[SpringBoot Excel] 엑셀 다운로드 공통 서비스 가이드 (0) | 2020.06.20 |
[SpringBoot Excel] 엑셀 업로드 공통 서비스 가이드 (0) | 2020.06.20 |
댓글