📝느낀 점
프로젝트 만들때, "아, 남들 전부 DTO라는걸 만들어서 하는구나" 하고 나또한 그냥 따라 치기 바빴다.
그리하여 이번 글을 작성하면서 DTO가 무엇인지, 왜 사용하는지, 이걸 사용함으로서 이점은 무엇인지 공부하였다.
즉, DTO라는 것은 데이터 교환을 위한 객체를 의미한다. 더 확실한 이유는 생성자 때문인 것이다.
객체를 생성할 때 유저의 정보를 당연히 전부 알면 좋겠지만, 그렇지 못할 상황도 있다.
그렇기에, 복잡한 애플리케이션에서 많은 이점을 제공한다는 것이다.
DTO란?
계층간의 데이터 교환을 위한 객체를 말합니다.
데이터를 전달하기 위해 사용하는 객체이다.
데이터 담아서 전달하는 바구니
- 오직, 게터, 세터 메서드만 갖는다
- 다른 로직은 갖지 않는다
DTO는 일반적으로 데이터 전송 및 객체 간 데이터 교환을 간단하게
만들어주는 패턴으로, 복잡한 애플리케이션에서 많은 이점을 제공합니다.
자바의 메소드를 선언할 때 리턴 타입은 한 가지만 선언할 수 있다.
public class MemberDTO {
public String name;
public String phone;
public String email;
}
그렇기에, 이처럼 DTO를 만들어 놓으면 메소드의 리턴 타입에 MemberDTO로 선언하고 그 객체를 리턴해 주면 된다.
예를 들어, 이렇게 말이다
public MemberDTO getMemberDTO() {
MemberDTO dto = new MemberDTO();
// ... 생략
return dto;
}
이렇게, 설명하는 이유는 생성자 때문이다
객체를 생성할 때 그 사람의 아무 정보도 모를 때도 있고,
이름만 알 때도 있고, 이름과 전화번호만 알 때도 있고,
모든 정보를 알고 있을 때도 있다.
이러한 각각의 상황에 따른 생성자를 MemberDTO에 추가하면
다음과 같이 구현 할 수 있는 것이다
// 아무 정보도 모를 때
public MemberDTO() {
}
// 이름만 알 때
public MemberDTO(String name) {
this.name = name;
}
// 이름과 전화번호만 알 때
public MemberDTO(String name, String phone) {
this.name = name;
this.phone = phone;
}
// 모든 정보를 알고 있을 때
public MemberDTO(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
너무 많이 만드는 것은 좋지 않다.
꼭 필요에 맞는 생성자만 만드는 습관을 들여야만 한다.
Reference
'Java' 카테고리의 다른 글
String 객체를 생성하는 방법과 내부 동작 원리 (String Pool) (0) | 2023.11.06 |
---|---|
생성자를 왜 만들어야 하나요? / 컴파일러는 왜 기본 생성자를 자동으로 생성해 주나요? (0) | 2023.11.06 |
상속 정의 / 상속이 갖는 단점들은 무엇인가요? (0) | 2023.11.06 |
인터페이스는 상수 필드만 선언이 가능한 이유는? (0) | 2023.11.06 |
왜 모든 클래스는 Object 클래스의 상속을 받을까? (0) | 2023.11.06 |