[Spring Boot] DTO

Sarah·2025년 12월 1일

Spring Boot

목록 보기
7/17

DTO

DTO : 데이터 전송 객체 (Data Transfer Object)

  • 프로세스 간 데이터를 전달하는 객체
  • Spring Boot에서 DTO는 폼의 데이터를 객체로 담아오는 역할을 한다. DTO는 toEntity() 메서드를 통해 데이터를 엔터티로 변환하고, DB에 엔터티를 저장한다.
  • DTO로 필요한 필드의 데이터만 가져올 수 있기 때문에 DTO를 사용한다.

DTO vs Entity

  • Entity는 DB와 직접 연결된 민감한 객체라 외부 입력을 마음대로 넣으면 위험하다.
  • 따라서 DTO -> Entity 변환 -> DB 저장!

언제 DTO를 쓰는가?

  • 외부 입력 (form 데이터)를 받을 때 꼭 DTO를 사용
  • 입력 (폼 요청) : Form -> DTO -> Entity -> DB 저장
  • 출력 (View 렌더링) : (큰 프로젝트의 경우) Entity -> 출력 DTO -> Model -> View

굳이 Entity를 그대로 보여주지 않고 출력 DTO를 사용하는 이유?

  • 보여줄 테이터만 깔끔하게 담기 위해!

입력 / 출력 DTO

  • 입력 DTO (Input DTO) : form에서 들어오는 값을 받는 용도
  • 출력 DTO (Output DTO) : 서버에서 View나 API로 데이터를 보낼 때 사용하는 DTO

DTO 내에서 작성해야 하는 것

  • 필드와 어노테이션, toEntity() 메서드

    주요 사용 어노테이션 (Lombok 활용)
    @Getter
    @Setter
    @NoArgsConstructor
    @AllArgsConstructor
    @ToString


DTO와 뷰 페이지 연결하기

<input type="text" class="form-control" name="title">

뷰 페이지에서 속성값으로 name을 추가하여 DTO의 필드명과 동일하게 설정!


DTO 작성 예시

@AllArgsConstructor
@ToString
public class ArticleForm {
    private Long id; // 가져오고 싶은 필드만 작성
    private String title; 
    private String content; 
    
	//Article이라는 Entity 타입으로 변환해주는 메서드
    public Article toEntity() { 
        return new Article(id, title, content);
    }
}
profile
헤맨 만큼 내 땅

0개의 댓글