[개념] DAO, DTO, VO 란?

2021. 12. 30. 22:51·Front/JSP

JSP 공부를 하다가 DAO, DTO, VO 개념에 대해 잘 잡고 가야 될 것 같아서 간단하게 정리하여 포스팅한다.

 

DAO (Data Access Object)

DB의 data에 접근하기 위한 객체이다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다.

직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.

MVC 패턴의 Model에서 이와 같은 일을 수행한다.

 

DTO(Data Transfer Object)

DTO는 계층 간(Controller, View, Business Layer) 데이터 교환을 위한 자바 빈즈(Java Beans)를 의미한다.
DTO는 로직을 가지지 않는 데이터 객체이고 getter/setter 메소드만 가진 클래스를 의미한다.

 

자바 빈즈(Java Beans) 설명

https://choitaetae.tistory.com/96

 

[JSP] 자바빈(JavaBean)이란?

자바빈(JavaBean) JSP에서 객체를 가져오기 위한 기법으로 데이터 전달 오브젝트 파일 DTO(Data Transfer Object)라고도 한다. 자바로 작성된 컴포넌트들 즉, 클래스(Class)를 일반적으로 말한다. JSP 프로그

choitaetae.tistory.com

 

VO(Value Object)

VO는 값 오브젝트로써 값을 위해 쓰인다. Read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가진다. DTO와 유사하지만 VO는 getter 기능만 존재한다.\

 

DTO와 VO 차이점

DTO는 인스턴스 개념이고 VO는 리터럴 값 개념이다.

 

VO는 값들에 대해 Read-Only를 보장해줘야 존재의 신뢰성이 확보되지만 DTO의 경우는 단지 데이터를 담는 그릇의 역할일 뿐 값은 그저 전달되어야 할 대상일 뿐이다.

 

값 자체에 의미가 있는 VO와 전달될 데이터를 보존해야하는 DTO의 특성상 개념이 다르다.

 

 

 

저작자표시 (새창열림)

'Front > JSP' 카테고리의 다른 글

[JSTL] 컨트롤러에서 받아온 list를 <c:forEach> 안 쓰고 값 표현 방법  (0) 2022.01.14
[JSP] DBCP란  (0) 2022.01.03
[JSP] 자바빈(JavaBean)이란?  (0) 2021.12.29
[JSP] GET 방식, POST 방식  (0) 2021.12.24
[JSP] 리다이렉트(Redirect)와 포워딩(Forwarding) 차이점  (0) 2021.12.22
'Front/JSP' 카테고리의 다른 글
  • [JSTL] 컨트롤러에서 받아온 list를 <c:forEach> 안 쓰고 값 표현 방법
  • [JSP] DBCP란
  • [JSP] 자바빈(JavaBean)이란?
  • [JSP] GET 방식, POST 방식
taetae_
taetae_
기록하기를 좋아하라, 쉬지 말고 기록해라, 생각이 떠오르면 수시로 기록하라, 기억은 흐려지고 생각은 사라진다. 머리를 믿지 말고 손을 믿어라.
  • taetae_
    태태의 개발 일지
    taetae_
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Front (29)
        • HTML, CSS (14)
        • JSP (6)
        • JavaScript (9)
        • React, Vue (0)
      • Backend (58)
        • Java, Kotlin (39)
        • JPA, QueryDSL, ORM (1)
        • Spring, Spring Boot (8)
        • Database (10)
      • 인프라, DevOps (6)
        • AWS, Cloud (1)
        • Docker, 배포 (3)
        • Git, 협업도구 (2)
      • 알고리즘, 코딩테스트 (34)
        • 백준 (24)
        • 프로그래머스 (9)
      • CS 기초 (7)
        • 자료구조, 알고리즘 이론 (0)
        • 운영체제 (2)
        • 네트워크 (5)
      • 개인 일반 (20)
        • 개발 도구, IDE (13)
        • 코드 품질, 리팩토링 (0)
        • 회고, 학습 정리 (2)
      • 시리즈 (4)
        • 대규모 트래픽 공연 티켓팅 시스템 (4)
      • 기타 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    #Docker #Container #Linux #Kernel #Namespace #Cgroups #DevOps #Virtualization
    gemini-pro 모델 사용법
    백준
    Python AI 개발 환경
    spring
    Redlock
    Thymeleaf
    오라클
    #스프링부트파일업로드 #스프링파일다운로드 #spring파일업로드예제 #java파일업로드다운로드 #springboot예제코드
    outbox
    Java
    Backend
    kafka
    Google Gemini API 키
    분산락
    #dns #도메인네임시스템 #dns란 #웹기초지식 #웹개발자팁 #개발자블로그 #백엔드개발 #프론트엔드개발 #웹성능최적화 #seo최적화 #dns작동원리 #dns서버 #dns보안 #dnsoverhttps #dns최적화 #ttl #dig #nslookup #cdn #도메인과ip #기술블로그 #개발자공부 #코딩블로그
    Gemini CLI 설치
    springgateway
    Gemini Python 설치
    #vscode #intellij #ide비교 #개발툴 #개발자팁 #단축키정리 #생산성향상 #프로그래밍툴 #개발자블로그 #개발자성장 #코딩효율화 #리팩토링 #디버깅팁 #springboot개발 #프론트엔드개발 #백엔드개발 #개발환경 #코딩툴추천
    MSA
    CDN이란
    git
    tranactional
    Windows AI 도구
    redis
    대규모트래픽
    자바
    프로그래머스
    gemini cli 사용법
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
taetae_
[개념] DAO, DTO, VO 란?
상단으로

티스토리툴바