춤추는 개발자

[Spring boot] Controller, Service, Dao, Dto 이해하기 본문

Developer's_til/스프링 프레임워크

[Spring boot] Controller, Service, Dao, Dto 이해하기

Heon_9u 2020. 10. 2. 14:06
728x90
반응형

1. Controller

 사용자의 요청(request)을 어떻게 처리할지 결정하는 파트입니다. 즉, Controller에 정의 된 기준대로 요청을 처리합니다.

 

@Controller

Controller의 역할을 수행한다고 명시해주는 어노테이션, Controller의 내용을 기준 삼아 요청을 처리.

 

@RequestMapping(vale=" ", method= )

Controller에 들어온 요청을 처리하는 기준점입니다.

서버의 URL + value로 매핑되며 method의 RequestMethod.GET or POST

주소창에 URL + value를 입력하면 method가 수행됩니다.


2. Service

 사용자의 요청(request)에 대해 어떤 처리를 할지 결정하는 파트입니다. 즉, Controller가 받은 요청에 대해 알맞는 정보를 가공해서 다시 Controller에게 데이터를 넘기는 것을 의미합니다.

 

 주의할 점은 실제 비즈니스 로직은 Service에서 수행하지 않습니다. API에서 발생하는 트랙잭션과 Domain의 순서 보장의 역할을 갖고 있으며, 실제 로직은 Domain 패키지에서 수행됩니다.

 

@Service

Service의 역할을 수행한다고 명시해주는 어노테이션.


3. DAO

 Data Access Object의 약자로 DB의 data에 접근하기 위한 객체입니다. 일반적으로 DB에 접근하는 코드는 SQL이기 때문에 Java에서 SQL을 사용하려면 Connection을 생성하고, 직접 쿼리문을 작성하여 Connection을 닫는 과정이 필요합니다.

 

 그러나 이는 번거롭고 코드의 가독성을 떨어뜨리기 때문에, 어플리케이션에서 사용할 DB로직을 객체 하나에 메서드로 구현하고, 이를 호출하여 사용하도록 만든 것을 DAO라고 합니다.

 

 DAO는 오버헤드를 줄일 수 있다는 장점이 있습니다. 실제 WA(웹 어플리케이션)에 다수의 사용자가 접속하여 DB I/O이벤트가 많이 발생할 경우, Connection이 많이 생기며 반응속도가 느려집니다. 하지만 DAO는 오직 1개의 Connection으로 다수의 요청을 모두 수행하기 때문에 WA의 안정된 운영을 보장합니다.


4. DTO

 Data Transfer Object이 약자로 계층 간의 데이터 교환을 위한 Java Bean을 말하며 VO(Value Object)와 유사한 특징이 있습니다.(동일한 개념이나 차이점은 있다.)

 한마디로 DTO란, Client가 요청할 양식과 요청을 처리하는 과정에서 기준이 되는 틀을 정의해준 것을 의미합니다.

 

Spring boot는 기본적으로 아래와 같은 계층 간의 데이터 교환이 이루어집니다.

 

출처: https://www.javatpoint.com/spring-boot-architecture

 

<Layer와 객체>

Layer 객체
Presentation Layer Controller
Business Layer Service
Persistence Layer JDBC, ORM 등
Database MySQL, MariaDB 등

 

 

728x90
반응형