작성
·
6
0
1. 강의 내용과 관련된 질문인가요?예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요, dto에 대해서 질문드리고 싶어 남깁니다. order 테이블에는 연관관계 필드가 있는데 orderDto에서는 연관관계 필드를 제외한 데이터들이 필드로 들어가있습니다.
보통 Dto를 작성할 때는 엔티티 연관관계 필드들은 양방향 편의 메서드같은것으로 수정하고 dto에서는 int, String같은 기본 필드들만 받는것이 일반적일까요 ?
스프링부트 1 버전에서 가급적 단방향 연관관계로 설계하라 하셨는데, 단방향으로 설계하게 되면 연관관계 편의 메서드를 작성하지 않을텐데 이때는 dto필드에 엔티티까지 작성하는지 궁금합니다.
좋은 강의 제공해주셔서 감사드립니다 !
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. wonderwall09in님.
DTO에서의 연관관계 필드 사용에 대해 질문해 주셨군요. DTO(Data Transfer Object)는 데이터 전송에 최적화된 객체로, 일반적으로 엔티티의 기본 필드만을 포함하며 연관관계 필드가 포함되지 않는 것이 일반적입니다.
기본 필드 중심: DTO는 주로 int
, String
같은 기본 데이터 타입만 포함합니다. 이렇게 하면 데이터 전송량이 줄어들고, 복잡성이 줄어들어 클라이언트와의 데이터 교환이 간편해집니다.
단방향 연관관계: 엔티티 설계 시 단방향 연관관계를 사용하는 경우, DTO에는 연관관계 필드를 포함시키지 않고 연관된 데이터는 필요한 경우 별도로 처리합니다. 이렇게 하면 복잡성을 줄이고 성능을 개선할 수 있습니다.
연관관계 편의 메서드: 영속성 계층에서 엔티티 간의 관계를 관리할 때는 편의 메서드를 사용할 수 있지만, 이들이 DTO에 노출되지는 않습니다. DTO는 전적으로 데이터를 가져오고 반환하는 데 집중합니다.
복잡한 객체: 만약 복잡한 객체 관계를 DTO로 보내야 한다면, DTO 내에서 다른 DTO를 포함하거나 별도의 방법으로 필요한 데이터를 구성하는 것이 일반적입니다.
DTO와 엔티티 설계에 관한 실무 팁이 잘 설명되어 있는 기존 논의로 “DTO 사용방법”이라는 질문을 참고해 보세요. 여기서는 실무에서의 사용 예시와 장단점이 자세히 설명되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.