Java/Spring

DTO, DAO, Repository, Entity 개념

SeungbeomKim 2022. 8. 4. 18:22
반응형

Entity(Domain) 

  • 데이터베이스에 쓰일 컬럼 및 여러 엔티티 간의 연관관계
  • 데이터베이스의 테이블을 하나의 엔티티로 생각해도 됨
  • DB 테이블과 1:1 매핑

Repository

  • Entity에 의해 생성된 DB에 접근하는 메소드를 사용하기 위한 인터페이스
  • Service와 DB를 연결하는 고리의 역할
  • DB에 적용하고자 하는 CRUD를 정의하는 영역

DAO(Data Access Object)

  • DB에 접근하는 객체를 의미
  • Service가 DB에 연결할 수 있게 해주는 역할
  • DB를 사용하여 데이터를 조회하거나 조작

DTO(Data Transfer Object)

  • DTO는 VO(value Object)이며, 계층간 데이터 교환을 위한 객체를 의미 (Read Only 개념을 담고 있음)

Spring Boot의 서비스 구조는 Client(프론트엔드 모듈)가 Controller에게 Dto 형식으로 request(요청)을 하게 된다.

ex)

회원가입을 요청(id, password, email 등의 정보를 Dto 객체에 담아 Controller에게 회원 가입 요청을 한다.)

Controller는 어떤 회원가입 요청인지 판단 후 Service 객체에 Dto 객체를 전달한다.

Service는  Business logic 영역이다. Dto 객체에 들어있는 데이터 값(id, password, email)을 활용해 필요한 기능들을 구현해주고 Entity 객체를 만드는 역할을 한다. 그리고 DB와 가장 가까운 객체인 DAO로 보내게 된다.

DAO(Repository)는 DB와 직접 통신을 하는 영역인데, Entity에 지닌 값들을 그대로 DB에 가져온다. 

 

Client ↔ Controller ↔ Service (DTO 객체 사용)

Service ↔ DAO(Repository) ↔ DB (Entity 객체 사용)

<참고 자료>

https://www.youtube.com/watch?v=4Pvd0KrTfvE 

 

반응형