DTO, DAO, Repository, Entity

Jaca·2021년 8월 31일
0

DAO (Data Access Object)

  • 데이터베이스에 접근하는 객체를 의미
  • Service가 DB에 연결할 수 있게 해주는 역할 (repository를 활용하여 접근하고, 메서드를 사용하는게 dao)
  • DB를 사용하여 데이터를 조회하거나 조작하는 기능을 전담
  • 원래 DB의 데이터와 프로그래밍 언어는 패러다임의 불일치로 인해 사용할 수 없음

하지만 별도의 Entity Class를 사용하여 그 클래스를 테이블과 1:1 매칭할 수 있음
이러한 Entity Class를 도메인이라고 하며 가장 DB와 가까운 클래스

Entity

  • 데이터베이스에 쓰일 컬럼과 여러 엔티티 간의 연관관계를 정의
  • 데이터베이스의 테이블을 하나의 엔티티로 생각해도 무방함
  • 실제 데이터베이스의 테이블과 1:1 매핑됨
  • 이 클래스의 필드는 각 테이블 내부의 컬럼을 의미
  • 엔티티는 순수한 도메인 로직과 비즈니스 로직만 가지고 있어야한다.

Repository

  • MVC 패턴에서 모델에 해당하는 부분
  • Entity에 의해 생성된 데이터베이스에 접근하는 메소드를 사용하기 위한 인터페이스
  • Service와 DB를 연결하는 고리의 역할을 수행
  • 데이터베이스에 적용하고자 하는 CRUD를 정의하는 영역
  • JPA 구현체인 Entity Manger 객체를 사용하여 DB에 접근

DTO (Data Transfer Object)

  • DTO는 VO와 거의 유사한 개념
  • 계층간 데이터 교환을 위한 객체를 의미
    • DB에서 데이터를 얻어 Service나 Controller 등으터 보낼 때 사용하는 객체를 말한다.
      즉, DB의 데이터가 Presentation Logic Tier로 넘어오게 될 때는 DTO의 모습으로 바껴서 오고가는 것이다.
      로직을 갖고 있지 않는 순수한 데이터 객체이며, getter/setter 메서드만을 갖는다.
  • VO의 경우 Read Only의 개념을 가지고 있음. (getter 만 있다.)

제길

솔직히 그렇게 와닿지 않는다.
계속 해보면서 이 개념들을 구분할 수 있게 신경 써보자

profile
I am me

0개의 댓글