JAP Repository대신 dao라 생각하기
여기서 어플리케이션 서버는 크게
1. 데이터를 데이터에서 받아오고 처리해서 브라우저에 출력한다.
2. 데이터를 브라우저에서 받아오고 처리해서 데이터베이스에 저장한다.
두 가지 일을 하게 되고, 그에 따라 데이터 클래스와 데이터 처리 클래스로 나눈다.
- 데이터 클래스
model, request, response는 데이터 클래스에 해당한다. 데이터 클래스는 아무런 행동도 하지 않고 데이터를 저장하고, 받고, 넘기기만 한다.
1. Model - 실제 비즈니스 모델을 위한 데이터를 보관하는 모듈이다.(은행이라면 잔액이나 계좌정보, 신용등급 등을 데이터베이스에서 뽑아서 들고있는 곳)
2. Request - http Request(클라이언트의 요청)에 포함되어 날아오는 데이터를 처리하는 곳. 모델 자체를 브라우저(http)와 접근시키기 전에 걸러주는 단계이다. 보통 보안 이슈를 처리하거나, 리퀘스트로 받아온 정보를 모델과 일치시키는 역할을 한다.
3. Response - 모델의 정보를 http Response(서버의 응답)에 포합시켜 보낸다. Request와 마찬가지로 모델을 직접 브라우저와 접근하지 않고 가운데서 데이터 등을 걸러준다. 여기서 보통 에러메시지 리스트를 장착하게 되는데, 모든 모델들이 Response를 통해서 에러메시지를 통해 전달하기 때문에 추상 클래스를 통해 에러 메세지 모듈을 넣으면 효율적으로 개발할 수 있다. ( 보통 Request 모듈과 Response 모듈은 Controller 모듈에 포함되어있다.)
package com.fsoftwareengineer.MySpringApp.ApiResponse;
import lombok.*;
import java.util.List;
@Getter @Setter
@RequiredArgsConstructor
public abstract class ApiResponse<T> {
@NonNull private T data;
private List<String> errors;
}
이런 식으로.
- 데이터처리 클래스
controller, service, DAO(jpa repository)는 데이터처리 클래스에 해당한다. 데이터처리 클래스는 데이터 클래스를 활용해 다양한 역할을 한다.
1. Controller - 컨트롤러는 사용자(Client)의 요청(Request)를 어떻게 할지(Handling) 결정하고, 응답(Response)해준다. 스프링 부트에서 제어를 담당한다. @Controller를 이용해 Controller의 역할을 한다고 명시해주거나 @RestController를 이용해 Restful API임을 스프링 부트에 알려주고, @RequestMapping을 이용해 Request가 들어오면 처리하는 기준점(URL)을 설정한다.
2. Service - 서비스는 사용자(Client)의 요청(Request)에 대해 올바른 정보를 제공하기 위한 처리를 한다.(이를 Business Logic이라 한다) 컨트롤러가 물리적으로 넘어온 요청을 처리하고 보내는 역할을 수행한다면, 서비스는 들어온 정보를 알맞게 가공하고 처리해 Controller에게 데이터를 넘기는 과정이라고 볼 수 있다.(요청/수행 분리) @Service를 이용해 Service의 역할을 한다고 명시한다.
DAO는 Data Access Object의 줄임말로, DB를 사용해 직접적으로 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말한다. DB에 대한 접근을 DAO가 담당하도록 하여 데이터베이스 엑세스를 DAO에서만 하게 되면 다수의 원격호출을 통한 오버헤드를 VO나 DTO를 통해 줄일 수 있고 다수의 DB 호출문제를 해결할 수 있다. 또한 단순히 읽기만 하는 연산이므로 트랜잭션 간의 오버헤드를 감소할 수 있다.
[출처] Spring Boot에서의 RESTful API 모듈|작성자 dreamcacao
'공부중 > 자바스프링' 카테고리의 다른 글
스프링 프로젝트에 src/main/java랑 src/main/resources, src/main/webapp 차이가 뭐야 (0) | 2024.04.04 |
---|---|
RESTful API 모듈 (0) | 2024.04.04 |
@SupperessWarnings 어노테이션 (0) | 2024.04.02 |
리팩토링(Refactoring)이란 (0) | 2024.03.15 |
전자정부프레임워크 (0) | 2024.03.11 |
댓글