gurumong
265
2021-06-21 21:14:02
3
175

서비스 레이어에서 리턴하는건 몽땅 DTO여야 할까요?


서비스 레이어에서 리턴하는건 몽땅 DTO여야 할까요?

서비스에서 서비스로 호출하는것도 있을 수 있을텐데

그러한 경우에는 엔티티를 반환하는게 더 편리하잖아요

그러한 기준을 어떻게 잡아야 할까요?

0
  • 답변 3

  • 하루히즘
    934
    2021-06-21 21:20:51

    어떤 책이었는지 기억이 안 나는데 엔티티 모델링이 변경됐을 때 그게 API 결과로 바로 반영되면 모든 클라이언트 측에 영향을 끼칠 수 있다고 DTO를 반환하는 게 좋다고 했던 것 같네요.

  • 유도지
    135
    2021-06-21 21:32:37
    서비스에서 서비스를 호출하는것은 순환 참조 오류를 범할 수 있기 때문에 좋은 방법이 아닙니다.
    repository를 통해 entity를 가져오도록 하고 서비스단에서 비지니스 로직 + dto로 변형하여 return 하는게 osiv을 위반하지 않는 최적의 방법이라고 생각합니다.
    다만 읽기 전용 트랜잭션에 관계 정의 없는 pure한 entity 모델이라면 그대로 사용해도 무방할 것 같네요.
  • 초무쿤
    6k
    2021-06-22 00:57:31

    전 Entity로 반환하고 Json출력되는 부분은 @JsonView로 컨트롤하고 있습니다.

  • 로그인을 하시면 답변을 등록할 수 있습니다.