-
2.2.2 모델, 엔티티, DTOSpring/웹 개발 101 2022. 4. 4. 16:20반응형
서비스를 구성하는 클래스에는 일을 하는 클래스, 데이터를 담는 클래스등이 있다. 이러한 클래스들을 기능에 따라 엔티티, 모델, DTO등으로 부른다.
무엇을 위한 클래스인지를 파악하는 것이 중요하다.
모델과 엔티티를 구성하는 클래스를 구성해보았다.
위치 : com.example.demo.model 패키지
이름 : TodoEntity.java
package com.example.demo.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @Data @NoArgsConstructor public class TodoEntity { private String id; //object의 ID private String userId; // 이 오브젝트를 생성한 사용자의 아이 private String title; // Todo타이틀(예: 운동하기) private boolean done; //true - todo를 완료한 경우(checked)) }
어노테이션 설명 (annotation)
- Builder : 롬복이 제공, Builder클래스를 따로 개발하지 않고도 Builder 패턴을 사용해 오브젝트를 생성할수 있음
- noArgsConstructor : 매개변수가 없는 생성자를 구현해줌
- AllArgsConstructor : 클래스의 모든 멤버 변수를 매개변수로 받는 생성자를 구현해줌
- Data : Getter / Setter 메서드를 구현해줌
DTO
- 모델 자체를 그대로 return하지않고 Data Trasnfer Object(DTO)로 변환해 리턴함
- 비즈니스 로직을 캐슐화 하기 위함
- 클라이언트가 필요한 정보를 모델이 전부 포함하지 않는 경우가 많음
package com.example.demo.dto; import com.example.demo.model.TodoEntity; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @Data @NoArgsConstructor public class TodoDTO { private String id; private String title; private boolean done; public TodoDTO(final TodoEntity entity) { this.id = entity.getId(); this.title = entity.getTitle(); this.done = entity.isDone(); } }
=> userId가 없는 이유 : 스프링 시큐리티를 이용해 인증을 구현할 예정.
=> HTTP 응답으로 사용할 DTO가 필요하다. DTO 패키지 아래에 ResponseDTO를 생성합니다.
package com.example.demo.dto; import java.util.List; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Builder @AllArgsConstructor @Data @NoArgsConstructor public class ResponseDTO<T> { private String error; private List<T> data; }
반응형'Spring > 웹 개발 101' 카테고리의 다른 글
2.2.6 퍼시스턴스 레이어 : 스프링 데이터 JPA (0) 2022.04.11 2.2.5 서비스 레이어 : 비즈니스 로직 (0) 2022.04.10 2.2.4 매개변수를 넘겨받는 방법 (0) 2022.04.08 2.2.3 REST API || 2.2.4 컨트롤러 레이어 (0) 2022.04.07 2.2 백엔드 서비스 아키텍쳐 (0) 2022.04.03