inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

7강. 유저 생성 API 개발

객체로 만들때 클래스 질문있습니다!

297

hyun

작성한 질문수 9

2

user 부분에서 dto로 UserCreateRequest 클래스를 만들어서 필드 와 getter 만들었는데 객체로 만들때 또 User를 만드는 이유가 뭘까요? 그냥 dto에 UserCreateRequest 클래스에서 User클래스에 있는 코드인

public User(String name, Integer age) {
    if (name == null || name.isBlank()) { // name이 null 이거나 공백이나 비어있을경우
        throw new IllegalArgumentException(String.format("잘못된 name(%s)이 들어왔습니다", name));
    }
    this.name = name;
    this.age = age;
}

이 부분을 추가해서 사용하면 안되는 건가요?

굳이 User 클래스를 만드는 이유를 모르겠습니다 ㅠ 객체로 만드는거라면 DTO 에서 하면 안되는지,,초보라서 궁금합니다!

java spring aws mysql jpa

답변 2

0

최태현

안녕하세요 hyun님! 🙂 좋은 질문 감사드립니다.

 

인프런 AI가 이야기 해준 것처럼, 각 클래스의 역할을 서로 구분하기 위해서 입니다. 보다 자세한 내용은 해당 답변에 있는 링크와 추가 유튜브 영상 (링크에 들어가시면 있어요!) 을 확인해보셔도 좋을 것 같습니다.

 

감사합니다! 🙏

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

hyun님의 질문에 대한 답변으로, DTO(Data Transfer Object)와 도메인 모델(Entity 또는 Domain class)의 차이점에 대한 이해가 필요해 보입니다. DTO는 계층 간 데이터 교환을 위해 사용되는 객체이며, 주로 뷰(View)와 컨트롤러(Controller) 사이 또는 서비스(Service) 계층과 컨트롤러 계층 사이에서 데이터를 전달하는 데 사용됩니다. 반면에, 도메인 모델(예: User 클래스)은 실제 비즈니스 도메인을 표현하는 객체로, 비즈니스 로직을 포함하고 있으며, 데이터베이스의 테이블과 매핑되어 데이터를 영구적으로 저장하거나 관리하는데 사용됩니다.

DTO를 사용해 비즈니스 로직을 처리하거나 엔티티의 역할을 하게 하면, 그 객체가 담당하는 책임이 모호해지고, 계층 간의 역할 분리 원칙이 흐려짐으로써 유지 보수성과 확장성 측면에서 문제가 발생할 수 있습니다. 따라서 User 클래스 같은 도메인 모델을 따로 만드는 것은 이러한 객체에 명확한 역할과 책임을 부여함으로써, 애플리케이션의 아키텍처를 깔끔하게 유지하고 비즈니스 로직의 중심을 명확하게 하는 데 있습니다.

관련하여 유사한 질문과 그에 대한 답변을 참고하시면 좋을 것 같습니다:
- user domain 생성관련 여기서 DTO와 도메인을 구분하는 것이 유지보수성을 높일 수 있기 때문에 주로 사용된다는 설명을 찾을 수 있습니다.

질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

리액트 관련 질문이 있습니다.

0

62

2

스프링부트 버전

0

67

2

7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.

0

55

2

33강. UserLoanHistory의 관계성에 대한 질문

1

52

2

Java JDK 버전 문의의 건

0

131

2

ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.

0

83

3

h2 console 접속했을 테이블 질문

1

63

1

ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨

0

72

2

15강. updateUser() 질문

0

53

2

깃허브 질

0

80

2

여기까지 다 끝냈다고 하셨는데

0

76

2

왜안될까요

0

68

2

MySQL 창이안ㄴ뜹니다

0

56

2

포스트맨

0

47

1

spring 개념적인 질문

0

69

2

인텔리제이 샘플코드 실행 안됨 오류

0

138

2

aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다

0

81

1

마이그레이션 오류입니다.

0

167

3

Whitelabel Error Page 오류가 났습니다.

0

158

2

안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ

1

89

3

궁금한게 있습니다.

0

55

2

DTO 관련

0

68

2

궁금한게 있습니다!

0

63

2

35강에서 returnBook 에서 userLoanHistory 값 중복에 관하여

0

54

2