출처 : https://youtu.be/4Pvd0KrTfvE
Springboot 서비스 구조
Client : 브라우저에 띄워져있는 화면
Controller : Request가 들어오는 부분 (DTO 형식의 객체를 사용)
어떠한 요청이 들어왔는지 판단한 후에 그것과 맞는 서비스로 DTO객체를 보내주게 됨.
Service : 비즈니스 로직의 전반적인 내용을 처리하는 곳
EX) 클라이언트에서 받은 이름, 비밀번호, email 뿐만 아니라 가입일자, 멤버등급 같은 것 서비스객체에서 처리를 해준다 => 이렇게 Entity를 만들어서 DAO로 보내게 됨
DAO : db와 직접 통신하는 영역 Entity에 있는 값을 db에 저장하거나, 가져오거나 같은 작업들을 수행하게 됨.
- ServiceImpl
- DAOImple
:실제화된 로직이 들어간 부분은 implementation 클래스가 비지니스 로직을 상속받게 됨.
Entity(Domain)
- 데이터베이스에 쓰일 컬럼과 여러 엔티티 간의 연관관계를 정의
- 데이터베이스의 테이블을 하나의 엔티티로 생각해도 무방함
- 실제 데이터베이스의 테이블과 1:1로 매핑됨
- 이 클래스의 필드는 각 테이블 내부의 컬럼을 의미
Repository
- Entity에 의해 생성된 데이터베이스에 접근하는 메소드를 사용하기 위한인터페이스
- Service와 DB를 연결하는 고리의 역할을 수행
- 데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역
DAO (Data Access Object)
- 데이터베이스에 접근하는 객체를 의미
- Service가 DB에 연결할 수 있게 해주는 역할
- DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담
DTO (Data Transfer Object)
- DTO는 VO로 불리기도 하며, 계층간 데이터교환을 위한 객체를 의미
- VO의 경우 ReadOnly의 개념을 가지고 있음.
- 데이터베이스의 컬럼과는 독립적이다.