본문 바로가기

emotional developer/detect-Java

Java Model Define

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 구현
    • package 위치
      • entity와 같은 패키지
      • 하위 model 패키지
  • VO
  • 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