Home [Java] DAO, DTO, VO 개념
Post
Cancel

[Java] DAO, DTO, VO 개념

DAO (Data Access Object)

  • DB의 Data에 접근하기 위한 객체이다.
    • DB에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.
    • MVC패턴의 ‘Model’에서 이와 같은 일을 수행한다.
  • DB 접근을 하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용한다.
  • 사용자는 자신이 필요한 Interface를 DAO에게 던지고, DAO는 이 Interface를 구현한 객체를 사용자에게 편리하게 사용할 수 있도록 반환한다.
  • 데이터베이스와 연결할 Connection까지 설정되어 있는 경우가 많다.
    • MyBatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드물다.

DTO (Data Transfer Object)

  • 계층 간 데이터 교환을 위한 자바 빈즈(Java Beans)이다.
    • Java Beans : Java로 작성된 소프트웨어 컴포넌트를 지칭하는 단어
  • 로직을 가지고있지 않는 데이터 객체이고, getter, setter 메소드만 가지고 있다.
  • DB에서 Data를 얻어 Service나 Controller 등으로 보낼 때 사용하는 객체이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Getter @Setter
public class MemberDto {

    @NotBlank(message = "이름은 필수 입력 값입니다.")
    private String name;

    @NotEmpty(message = "이메일은 필수 입력 값입니다.")
    @Email(message = "이메일 형식으로 입력해주세요.")
    private String email;

    @NotEmpty(message = "비밀번호는 필수 입력 값입니다.")
    @Length(min=8, max=16, message = "비밀번호는 8자 이상, 16자 이하로 입력해주세요.")
    private String password;

    @NotEmpty(message = "주소는 필수 입력값입니다.")
    private String address;

}

dto

VO (Value Object)

  • VO는 값 오브젝트로써 값을 위해 쓰인다.
    • Read only 특징을 가진다.
      • 자바에서 값 타입을 표현하기 위해 불변 클래스를 만들어 사용
      • 사용하는 도중에 변경 불가능하며 오직 읽기만 가능 (getter기능만 존재)

DTO와 VO의 차이점

  • DTO는 가변적인 성격을 가지고 있지만, VO는 불변의 성격을 가지고 있다.
    • DTO는 인스턴스 개념이고, VO는 리터럴 개념

출처📎

This post is licensed under CC BY 4.0 by the author.