클라이언트가 요청하여 데이터베이스에서 정보를 반환받는 과정에서 DTO, DAO, Entity가 어떻게 사용되는지 순서대로 설명해 드리겠습니다.
1. 클라이언트 요청
- **클라이언트(예: React)**에서 특정 URL로 API 요청을 보냅니다. 이 요청에는 필요한 데이터가 포함되어 있습니다.
2. DispatcherServlet 수신
- Spring MVC의 DispatcherServlet이 요청을 수신합니다.
3. 핸들러 매핑
- DispatcherServlet은 요청 URL에 매핑된 Controller를 찾습니다.
4. Controller 호출
- 해당 Controller 메서드가 호출되어 비즈니스 로직을 처리합니다.
5. 요청 데이터 변환 (DTO)
- 클라이언트 요청에서 필요한 데이터는 **DTO (Data Transfer Object)**로 변환됩니다. DTO는 클라이언트와 서버 간의 데이터 전송을 위한 객체입니다.
6. Service 호출
- Controller는 비즈니스 로직을 수행하기 위해 Service 계층의 메서드를 호출하고, DTO를 인자로 전달합니다.
7. DTO에서 Entity 변환
- Service 계층에서 DTO 를 사용하여 필요한 데이터에 대한 Entity 객체를 생성합니다. 이 엔티티는 데이터베이스의 테이블과 매핑됩니다.
8. DAO 호출
- Service는 DAO (Data Access Object)를 호출하여 데이터베이스와 상호작용합니다. DAO는 주어진 Entity를 기반으로 CRUD 작업을 수행합니다.
9. 데이터베이스 작업
- DAO는 Entity 객체를 사용하여 데이터베이스에 쿼리를 실행하고, 요청된 데이터를 조회합니다.
10. 결과 반환
- DAO가 데이터베이스에서 가져온 결과는 다시 Service 로 반환됩니다.
- Service는 Entity를 DTO로 변환하여 Controller 에 전달합니다.
11. Controller에서 응답 처리
- Controller는 Service로부터 받은 DTO를 사용하여 ModelAndView 객체를 생성하거나 직접 응답을 준비합니다.
12. 응답 반환
- 최종적으로 Controller는 응답을 JSON 형식으로 변환하여 DispatcherServlet으로 반환하고, 이는 클라이언트(React)로 전달됩니다.
13. 클라이언트에서 데이터 처리
- 클라이언트는 서버로부터 받은 응답 데이터를 처리하여 사용자에게 표시합니다.
이러한 흐름을 통해 클라이언트와 서버 간에 데이터가 효율적으로 이동하며, 각 구성 요소(DTO, DAO, Entity)가 역할을 분담하여 잘 작동합니다.