본문 바로가기

두두의 IT/Spring

DAO, DTO, VO 차이

728x90

DAO (Data Access Object)

  • DataBase의 data에 접근하기 위한 객체로, 데이터 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행함
  • DataBase 접근 로직과 비지니스 로직을 분리하기 위해 사용함
  • DB와 연결할 Connection 까지 설정되어 있는 경우가 많음
  • 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭄

 

DTO (Data Transfer Object)

  • 계층 간(Controller, View, Business, Persistent Layer, DataBase) 데이터 교환을 하기 위해 사용하는 객체(Java Beans)
  • 로직을 가지지 않는 순수한 데이터 객체 (getter & setter 메소드만 가진 클래스)
  • 유저가 자신의 브라우저에서 데이터를 입력하여 form에 있는 데이터를 DTO에 넣어서 전송할 때 사용
  • 주로 비동기 처리를 할 때 사용

 

VO (Value Object)

  • 단순히 값을 표현하기 위해 쓰임
  • 사용하는 도중에 변경 불가능한 Read-Only 클래스
  • equals()와 hashcode() 를 오버라이딩 하는 것이 핵심 역할
  • VO 내부에 선언된 속성(필드)의 모든 값들이 VO 객체마다 값이 같아야, 똑같은 객체라고 판별함
  • 테이블 내에 있는 속성 외에 추가적인 속성을 가질 수 있으며, 여러 테이블(A, B, C)에 대한 공통 속성을 모아서 만든 BaseVO 클래스를 상속받아서 사용할 수도 있음

 

DTO와 VO의 차이점

DTO VO
setter를 통한 가변 불변

 

Java Beans

  • Java로 작성된 소프트웨어 컴포넌트를 지칭하는 단어
  • 비즈니스 로직 부분을 담당하는 Java 프로그램 단위
  • JSP페이지가 복잡한 자바 코드로 구성되는 것을 피할 수 있음
  • 재사용 가능한 컴포넌트를 만들 수 있음

'두두의 IT > Spring' 카테고리의 다른 글

Builder와 Getter/Setter  (0) 2023.04.18
int, Integer 차이  (0) 2023.04.17
JUnit5  (0) 2022.11.10
조회 빈이 2개 이상일 때  (0) 2022.10.31
lombok  (0) 2022.10.31