공부 하면 할수록 이론적인 공부 보다는 프로젝트도 빨리 진행해보고 싶은 생각이 많이 들었다.
그래서 어떤 서비스 구조로 구성 되어있는지 알기 위해서 간단하게 정리 해봤다.
회원 가입을 예로 생각해보면
클라이언트에서 정보를 받아서 DTO객체에 담아서 회원가입 요청 컨트롤러에 전하고 컨트롤러는 어떤 요청인지 확인하고 그거하고 매칭되는 DTO 객체를 서비스로 보내준다. 서비스 객체(비지니스 로직) 는 회원 가입에 필요한 내용들을 처리 한다음 (들어온 정보 말고도 ex) 가입날짜 등급 ...) Entity라는 객체를 만들고 DAO 로 보낸다 그리고 DAO는 DB와 직접적 매칭
Entity (도메인)
DB에 쓰일 컬럼과 여러 엔티티 간의 연관관계를 정의
DB의 테이블을 하나의 엔티티로 생각해도 무방함.
Contoller
클라이언트의 요청을 전담하여 처리.
Service
비지니스 로직을 수행하는 부분
주로 기능을 수행하는 메소드를 이곳에 넣으면 됨.
Repository
Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스
Service와 DB를 연결하는 고리의 역할을 수행
DB에 적용하고자 하는 CRUD를 정의
DAO(Data Access Object)
데이터베이스에 접근하는 객체를 의미
Service가 DB에 연결할 수 있게 해주는 역할
DB를 사용하여 데이터를 조회하거나 조작하는 기능.
Repo를 활용을해서 사용하는것. 접근하는 본질은 Repo가 가지고 있음.
DTO (Data Transfer Object)
DTO는 계층간 데이터 교환을 위한 객체를 의미.
사용 하는 범위가 혼용되기 떄문에 같은 의미로 보자.
계층간 데이터 교환
클라이언트->컨트롤러
컨트롤러-> 서비스
Entity와 다른점은 Entity는 DB와 동일하게 만들어져있는 클래스를 의미
Entity랑 같은 필드값을 가지고 있지만 , 서비스에서 뺴고 추가 할수 있기때문에 DB에 컬럼하고는 독립적.
참조
https://www.youtube.com/watch?v=4Pvd0KrTfvE&list=PLlTylS8uB2fBOi6uzvMpojFrNe7sRmlzU&index=16