ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2.2.2 모델, 엔티티, DTO
    Spring/웹 개발 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;
    
    }
    반응형

    댓글

Designed by Who.