2017-05-10 8 views
0

API 프로젝트의 경우 클라이언트로 데이터를 검색하고 제공하는 데 많은 패턴이 있음을 알고 있습니다. Controller <-> Service <-> Dao 패턴은 이러한 패턴 중 하나입니다.서비스 레이어 리턴 오브젝트 유형

서비스 계층 또는 서비스 계층에서 개체 유형을 반환하는 것이 좋습니까? 반환 개체는 관련 엔터티 여야합니까?

예를 들어 User, UserService, UserDao입니다. UserService에서 반환되는 형식은 User 또는 모든 유형의 개체가 적합해야합니까?

서비스 계층에서 논리적 작업을 수행하면 다른 개체를 반환 유형으로 사용하도록합니다.

이 경우 가장 좋은 방법은 무엇입니까?

+0

일반적으로 서비스는 의도 한 바를 반환합니다. 사용자 또는 목록 을 반환하는 UserService와 같습니다. 엔티티를 DTO로 변환하는 변환기를 선택적으로 가질 수 있습니다. 서비스는 엔티티 또는 엔티티를 가져오고 DTO로 변환하기 위해 tansformer를 호출 할 책임이 있습니다. –

답변

1

널리 받아 들여지는 관행은 서비스가 모든 비즈니스 논리를 포함하고 사용자의 DTO (Data Transfer Object)/비즈니스 객체를 반환하는 것과 관련됩니다. 서비스는 DAO, 다른 데이터 소스를 호출하여 엔티티를 가져올 수 있으며, 매퍼/변환기 유틸리티를 사용하여 엔티티를 DTO 객체로 변환 할 수 있습니다.

Service에서 반환 된 DTO 객체는 ResponseEntity (Spring MVC의 경우)에 포함되어 컨트롤러에서 반환 될 수 있습니다.

이렇게하면 응용 프로그램이 웹, 서비스, 데이터 액세스와 같이 3 개의 분리 된 레이어가됩니다. 이것은 Separation of Concerns, Single Responsibility와 같은 디자인 원칙을 지원합니다. 또한 유닛 테스트 및 코드 관리가 더 쉬워집니다.

+0

좋은 설명, 감사합니다! 나는 다른 사용자로부터 더 많은 제안을 읽고 싶다. – Tugrul