Spring 1주차 마무리(Dto)

권성현·2022년 12월 1일
0

면접 준비

목록 보기
26/30
post-custom-banner

참고 자료: https://velog.io/@hyemco/TIL-%EA%B8%B0%EC%88%A0%EB%A9%B4%EC%A0%91%EB%8C%80%EB%B9%84-DTO%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EC%9D%B4%EC%9C%A0

  • DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)이다.

  • Entity를 통해 DB에서 데이터를 꺼내왔지만 한 가지 문제가 있다.
  • 요청을 받고 데이터를 처리하고 반환해주기 위해선 데이터에 접근해야 하는데 여기서 Controller, Presentation Layer의 경우 클라이언트와 직접 맞닿는 부분이고 엔티티는 프레젠테이션 계층과 완전히 분리되어야 한다

이럴 때 DTO를 사용한다.

  • 계층 간 데이터 교환을 위한 객체(Java Beans)이다.
    계층간 데이터 교환을 위한 객체(Java Beans)이다.

  • DB에서 데이터를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체를 말한다.

  • 즉, DB의 데이터가 Presentation Logic Tier로 넘어오게 될 때는 DTO의 모습으로 바뀌고 오가는 것이다.

  • 로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖는다.

  • 하지만 DB에서 꺼낸 값을 임의로 변경할 필요가 없기 때문에 DTO클래스에는 setter가 없다. (대신 생성자에서 값을 할당한다.)

Getter와 Setter란?

Getter, Setter를 이용해서 데이터를 생성 및 접근을 하게 되면 들어오는 값을 바로 저장하는 게 아닌,한번 검증하고 처리할 수 있도록 할 수 있기 때문에 데이터의 무결성이 지켜집니다.

  • Getter : 본 필드의 값을 숨긴 채 내부에서 가공된 값을 꺼낼 수 있다.
  • Setter : 필드를 private로 만들어 외부의 접근을 제한한 후, Setter를 사용해 전달받은 값을 내부에서 가공해 필드에 넣어줄 수 있다.
  • Request와 Response용 DTO는 View를 위한 클래스
  • 자주 변경이 필요한 클래스
  • Presentation Model
  • toEntity() 메서드를 통해서 DTO에서 필요한 부분을 이용하여 Entity로 만든다.
  • 또한 Controller Layer에서 Response DTO 형태로 Client에 전달한다.

참고 VO(Value Object) vs DTO

  • VO는 DTO와 동일한 개념이지만 read only 속성을 갖는다.
  • VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 Layer간의 통신 용도로 오가는 객체를 말한다.
profile
개발일지
post-custom-banner

0개의 댓글