강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của gongdev052204
gongdev052204

câu hỏi đã được viết

Bắt đầu back-end trong một ngày với JUJU - Spring, Docker, AWS

4-7 [Review] Phát triển API lấy review từ quán ăn ngon đã đăng ký

dto 관련 질문입니다.

Viết

·

376

0

컨트롤러(Api) 패키지 안에 만드신 dto(request, response)는 private final로 선언하셔서 데이터가 변경되지 않도록 선언하셨고,

서비스단 패키지 안에 만드신 ReviewDto는 private으로만 선언하여 데이터가 언제든 변경이 되게끔 선언하셨는데

이 차이가

서비스단 로직의 데이터는 비즈니스 로직을 통해 언제든 변할 수 있기 때문이고

컨트롤러단 로직은 받아온 데이터와, 응답하는 데이터이기 때문에 변할 일이 없기에 선언 방식이 다른 것이 맞을까요?

 

너무 기초적인 부분일 수 있지만

제가 이해한 바가 맞는지 궁금하여 질문드립니다.

 

springgitdockerspring-bootjpagithub

Câu trả lời 2

0

jyujyu님의 프로필 이미지
jyujyu
Người chia sẻ kiến thức

안녕하세요. 지식공유자 쥬쥬입니다.

 

말씀하신 DTO는 일반적으로 대부분 불변성을 띕니다 ! 일반적으로 실무에서 불변하지 않은 것은 Entity(JPA Entity) 입니다. 실습에서는 최대한 다양하게 코딩하는 것을 지향했기 때문에 말씀하신대로 개발했던 것 같습니다.

0

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

gggg5555님, 질문하신 DTO 관련하여 말씀드리겠습니다.

DTO(Data Transfer Object)의 사용 목적과 맥락에 따라 선언 방식이 다를 수 있습니다.

컨트롤러(Api)에서 사용하는 DTO는 외부에서 요청받은 데이터 혹은 외부로 응답하는 데이터를 목적으로 합니다. 이 데이터는 요청이 처리되는 동안 변경될 필요가 없기 때문에 private final로 선언하여 불변성을 갖추는 것이 일반적입니다. 불변 객체로 선언함으로써, 실수로 데이터를 변경하는 것을 방지하고, 여러 스레드에서 동시에 접근해도 데이터 일관성을 유지할 수 있습니다.

서비스단에서 사용하는 DTO의 경우, 비즈니스 로직을 처리하면서 데이터의 상태가 변할 수 있어야 할 필요가 있습니다. 따라서 해당 데이터들이 상황에 따라 변경될 수 있도록 private으로만 선언하여 일부 유연성을 제공합니다.

따라서 말씀하신 바와 같이, DTO의 선언 방식은 해당 DTO가 사용되는 맥락에 따라 달라질 수 있으며, 컨트롤러 단계에서는 데이터의 불변성을 확보하기 위해 private final을 사용하고, 서비스단에서는 필요에 따라 데이터가 변할 수 있도록 설계하는 것이 맞습니다.

질문하신 내용에 대한 이해가 정확하신 것으로 보입니다! 추가적인 궁금증이 있다면 언제든지 질문해 주세요.

Hình ảnh hồ sơ của gongdev052204
gongdev052204

câu hỏi đã được viết

Đặt câu hỏi