DTO

sung eon·2022년 7월 19일
0

스터디

목록 보기
10/13

코드리뷰

DTO는 왜 사용할까?

DTO를 사용하지 않는 다면?

만약 내가 user에게 id, name, email, password를 받는다고 치자. 그러면 User Entity에서 멤버 변수로 받게된다.

  • User.java
public class User {

	private Long id;
    private String name;
    private String email;
    private String password;
    .
    .
    .
}
  • UserController.java
@GetMapping("/user/{id}")
@ResponseStatus(HttpStatusOK)
public User myPage(@PathVariable("id") Long id) {
	return userService.myPage(id);
}

이런식으로 Entity와 Controller가 만들어지는데, 이때 Controller는 클라이언트 요청에 대한 응답으로 User를 넘겨주게된다. 그런데 이때 다음과 같은 문제점이 생긴다.

  • User의 모든 속성이 외부에 노출됨.
    • myPage 조회에 대한 요청에 대한 응답으로 외부에 노출되면 안되는 password 데이터까지 응답으로 보내준다.
    • 요청에 대한 데이터 외의 불필요한 데이터를 모두 가지고 있다.

DTO를 사용한다면?

  • UserResponseDto.java
public class UserResponseDto {

	private String name;
    private String email;
}
  • UserController.java
@Getmapping("/user/{id}")
@ResponseStatus(Httpstatus.OK)
public UserResponseDto mypage(@PathVariable("id") Long id) {
	return userService.myPage(id);
}

이렇게 DTO를 사용하면 요청에 맞는 정보만 응답할 수 있다.

DTO는 클라이언트 요청에 포함된 데이터를 담아 서버측에 전달하고, 서버측의 응답 데이터를 담아 클라이언트에 전달하는 계층잔 전달자 역할을 한다

참고 자료 : DTO에 대하여

profile
코베베

0개의 댓글