Spring Boot의 서비스 구조 :
Client <--DTO--> Controller <--DTO--> Service <--Entity--> DAO(Repository) <--Entity--> DB
↑ ↑
ServiceImpl DAOImpl
ex ) 회원가입 - Client에서 정보를 받고 DTO 객체에 담은 후 회원가입 요청 Controller에 전달. Controller는 어떤 요청인지 확인하고 그것과 매칭되는 DTO 객체를 Service로 보내줌. Service 객체는 회원가입에 필요한 내용들을 처리 한다음 Entity라는 객체를 만들고 DAO로 보냄. DAO는 DB와 직접적 매칭.
Entity (Domain)
- 데이터베이스에 쓰일 컬럼과 여러 엔티티 간의 연관관계를 정의. 데이터베이스의 테이블을 하나의 엔티티로 생각해도 무방함. 실제 데이터베이스의 테이블과 1:1로 매핑됨. 이 클래스의 필드는 각 테이블 내부의 컬럼(Column)을 의미함. Client의 요청을 전담하여 처리.
Service
- 비지니스 로직을 수행하는 부분. 주로 기능을 수행하는 메소드를 이곳에 넣으면 됨.
DAO (Repository)
- Entity에 의해 생성된 데이터베이스에 접근하는 메소드를 사용하기 위한 인터페이스. Service와 DB를 연결하는 고리의 역할을 수행. 데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역. (접근하는 본질은 Repository에)
DAO (Data Access Object)
- 데이터베이스에 접근하는 객체를 의미 (Persistance Layer). Service가 DB에 연결할 수 있게 해주는 역할. DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담. (메소드들 활용을 해주는게 DAO)
DTO (Data Transfer Object)
- DTO는 VO(Value Object)로 불리기도 하며, 계층간 데이터 교환을 위한 객체를 의미함. VO의 경우 Read Only의 개념을 가지고 있음.
'Spring' 카테고리의 다른 글
Logback 노트 (0) | 2022.11.04 |
---|---|
ORM, JPA, Spring Data JPA 노트 (0) | 2022.11.03 |
Lombok 정리 노트 (0) | 2022.11.01 |
POST, PUT, DELETE API + Swagger 라이브러리 노트 (0) | 2022.10.31 |
Get API 만드는 방법 노트 (0) | 2022.10.30 |
댓글