일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- top-down
- Controller
- scikit-learn
- 직무면접
- Java
- disjoint set
- bottom-up
- 거쳐가는 정점
- 기술면접
- spring boot
- Python
- union-find
- 벨만 포드 알고리즘
- Django
- 최단경로
- BufferedReader
- 코딩테스트
- Android Studio
- 동적계획법
- clean code
- 음수가 포함된 최단경로
- 우선순위큐
- kmeans
- 유니온 파인드
- 엔테크서비스
- compiler
- dto
- 플로이드 와샬
- 다익스트라
- onclick
- Today
- Total
춤추는 개발자
[Spring boot] Controller, Service, Dao, Dto 이해하기 본문
[Spring boot] Controller, Service, Dao, Dto 이해하기
Heon_9u 2020. 10. 2. 14:061. 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는 기본적으로 아래와 같은 계층 간의 데이터 교환이 이루어집니다.
<Layer와 객체>
Layer | 객체 |
Presentation Layer | Controller |
Business Layer | Service |
Persistence Layer | JDBC, ORM 등 |
Database | MySQL, MariaDB 등 |
'Developer's_til > 스프링 프레임워크' 카테고리의 다른 글
[Spring boot] 소셜 로그인 (Spring Security와 OAuth2.0) (0) | 2021.07.27 |
---|---|
[Spring boot] API의 CRUD 구현과 JPA Auditing 활용하기 (0) | 2021.07.14 |
[Spring boot] IntelliJ와 gradle로 시작하는 Spring Boot (0) | 2021.07.07 |
[우아한테크세미나] 우아한 스프링 부트 (0) | 2021.04.09 |
Spring과 Spring boot (0) | 2020.10.02 |