inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

Service 의 반환값이 DTO인지 entity 인지에 대해서 궁금한점이 있습니다.

1060

Sung-Woo Hwang

작성한 질문수 4

0

안녕하세요, 영한님 . 쓰신 책으로 먼저 이름을 접하게 되었는데 인프런에도 강의하고계셔서 신기합니다 ㅎㅎ

다름이 아니고 작은 프로젝트를 하는데 궁금한점이 생겨서 질문드립니다.

제가 아는 바로는 Service의 반환값은 entity가 아닌 DTO로 알고있습니다. https://stackoverflow.com/questions/21554977/should-services-always-return-dtos-or-can-they-also-return-domain-models

그런데 궁금한점은 만약 Service A의 특정메소드의 반환값을 Service B에서 필요로 하게 될때 어떻게 처리할지 고민입니다.

만약 ServiceA의 메소드의 반환값이 entity면 Service B 에서 큰 작업 없이 사용하면 되는데, 
dto인 경우일때 처리가 쉽지않은것같습니다.

그래서 ServiceA가 사용하는 repository A를 Service B에서 호출하는 방식을 사용을 고민중인데 혹시 이게 나쁜 방법일지 잘 모르겠습니다. 혹시 DTO들을 entity로 변환하는 로직을 모두 넣어줘야할까요?

정리하자면 

  1. Service A,B의 메소드가 entity가 아닌 DTO를 반환한다.
  2. ServiceB에서 A entity에 대해서 접근할때 Service A는 dto를 반환해서 B에서 원할히 접근하기 어렵다.
  3.  ServiceB에서 ServiceA를 호출하지 않고 repositoryA를 호출하는데 좋은 방식인지 모르겠다.

조언 부탁드립니다 !

spring java spring-boot JPA

답변 1

1

김영한

안녕하세요. Sung-Woo Hwang님

결론부터 말씀드리면

1. 서비스에서 꼭 DTO를 반환하지 않아도 됩니다. 서비스에서 엔티티를 반환해도 됩니다.

2. 서비스에서 리포지토리는 다른 리포지토리를 사용해도 아무런 문제가 없습니다.

감사합니다.

강의 관련 외 질문입니다.

0

69

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

1

92

1

BeanCreationException

0

91

3

Update 후 UpdateMemberResponse 매핑할 때

0

50

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

101

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

84

1

루트 쿼리라는것은

0

60

1

메서드를 분리하는 기준

0

67

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

112

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

86

2

fetch join과 영속화와 OSIV의 관계

0

87

2

Distinct 사용 전 결과에 대한 의문

0

117

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

60

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

60

1

뷰템플릿 사용 시

0

78

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

86

1

DTO 대신 Form 사용은 안되나요?

0

138

1

OSIV ON 상태일 때

0

96

1

fetch join VS fetch join 페이징 궁금증

0

187

2

양방향 연관관계 알아보는 법?

0

107

1

16강 17강 간단 정리 이게 맞을까요 ?

0

166

2