ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DAO, DTO, VO란?
    프로그래밍 기초 공부 2023. 3. 23. 22:20

    DAO

    • Data Access Object의 약자
    • DB의 data에 접근하기 위한 객체로 실제로 DB에 접근하는 객체
    • 데이터에 접근하도록 DB접근 관련 로직을 모아둔 객체
    • 프로젝트의 서비스 모델과 실제 DB를 연결하는 역할

     

     

    DAO와 Repository

    • DAO와 Repository 모두 퍼시스턴스 로직에 대한 객체지향적인 인터페이스를 제공
    • 도메인 로직과 퍼시스턴스 로직을 분리하여 관심의 분리 원칙을 만족시키는 데에 목적이 있음
      • DAO의 인터페이스는 DB의 CRUD 쿼리와 1대1 매칭되는 세밀한 단위의 을 제공함
      • Repository의 인터페이스는 메모리에 로드된 객체 컬렉션에 대한 집합 처리를 위한 오퍼레이션을 제공함
      • DAO가 제공하는 오퍼레이션은 Repository가 제공하는 오퍼레이션보다 세밀함
      • Repository애서 제공하는 하나의 오퍼레이션은 DAO의 여러 오퍼레이션에 매핑되는 것이 일반적

     

     

    DTO

    • Data Transfer Object의 약자
    • Client와 DB 사이의 여러 계층 간 데이터를 교환 하기 위해 사용하는 객체
    • 로직을 가지지 않는 순수한 데이터 객체
    • 주로 비동기 처리를 할 때 사용
    • 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스
      • 추가적으로 toString(), equals()등의 메소드를 작성 할 수 있음
    • Controller와 같은 client단과 직접 마주하는 계층에 Entity를 직접 전달하는 대신 DTO를 사용해 데이터를 교환

     

     

    유저가 입력한 데이터를 DB에 넣는 과정

    1. 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송
    2. 해당 DTO를 받은 서버가 DAO를 이용해 DB로 데이터를 집어넣음

     

     

    Entity와 DTO

    • 데이터의 변경이 많은 DTO 클래스를 분리해주어 DB로의 접근을 보호하기 위해
      • Entity 값이 변하면 Repository 클래스의 Entity Manager의 flush가 호출될 때 DB에 값이 반영되고 이것이 다른 로직에 영향을 줌
    • Entity의 필드를 모두 공개하지 않고 필요한 부분만 공개하기 위해서 DTO를 사용
    • 응답, 요청시 객체의 형태가 바뀔 수 있기 때문에
    • 컨트롤러에서 DTO를 통해 다음 계층에서 값에 대한 검증과정이 반복되지 않도록 함

     

     

    VO

    • Value Object의 약자
    • 값 오브젝트로써 값을 위해 쓰임
    • Read-Only 즉 읽기만 가능한 특징을 가짐
    • 데이터 그 자체에 의미를 두고 있음
    • 읽기만 가능하기 때문에 setter가 없어 값을 변경할 수 없음

     

     

    DTO와 VO 차이점

    1. DTO는 가변의 성격을 가지고, VO는 불변의 성격을 가짐
    2. DTO는 데이터 전송을 위해 존재하고, VO는 값 그 자체의 의미를 가짐
    3. DTO는 Layer간의 통신 용도로 오고가는 객체라면, VO는 특정한 비즈니스 값을 담는 객체
    4. DTO는 인스턴스 개념이라면 VO는 리터럴 개념

    '프로그래밍 기초 공부' 카테고리의 다른 글

    Kafka란?  (0) 2023.03.31
    JPQL 이란?  (0) 2023.03.30
    Spring Annotation 정리  (0) 2023.03.13
    Stream  (0) 2023.02.02
    스크럼이란?  (0) 2023.01.25
Designed by Tistory.