이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

[Spring Basic] DAO Repository DTO VO Entity

  • 2022.07.09 13:27
  • Spring/Spring

 

 

 

DAO, Repository

 

 

데이터에 접근하기 위한 객체를 DAO (Data Access Object) 라고 한다.

 

 

 

 

 

 

DAO를 사용해 데이터베이스에 있는 테이블로부터 CRUD를 수행한다.

데이터베이스 테이블 하나당 하나의 DAO를 작성하고, Controller에서 DAO를 통해 데이터베이스를 다룬다.

 

 

 

 

 

컨트롤러에서 바로 데이터베이스에 접근하도록 할 수도 있지만, 이 경우 중복되는 메서드들이 많이 발생할 수 있다.

중복되는 내용을 DAO로 따로 정리해놓고, 컨트롤러가 DAO를 통해 데이터베이스에 접근하도록 하는 편이 합리적이다.

 

이를 계층의 분리라고 부르고 DAO는 Persistence Layer, 컨트롤러를 Presentation Layer라고 부른다.

 

DAO 계층에서 데이터베이스 연결, 쿼리 실행, 등 데이터베이스와 관련된 모든 작업을 처리한다.


Repository와 DAO는 모두 데이터베이스에 접근하는 디자인패턴이고, 데이터베이스와의 상호작용을 추상화한다.

Repostiory는 엔티티 객체를 보관하고 관리하는 저장소이고 DAO는 데이터베이스 접근 로직을 모아둔 객체라고 하는데... 개념의 차이일 뿐이고 실제 개발 시에는 비슷하게 사용된다.

 

 

 

DTO, VO

 

DTO (Data Transfer Object) 는 데이터를 전송하는 객체로, 클라이언트와 서버 간에 데이터를 전송할 때 사용된다.

비즈니스 로직을 가지면 안되고 데이터를 전송할 때만 사용해야 한다.

getter 및 setter만 메서드로 가진다.

 

VO (Value Object) 는 값 자체를 나타내는 객체로 한 번 생성되면 값을 변경할 수 없고 값을 비교할 때 객체 내부의 값이 같다면 같음으로 판단되어야 한다. (equals 와 hashCode 메서드를 오버라이드 해야 한다)

비즈니스 로직을 가질 수 있고 값을 비교할 때 사용된다.

 

Entity 는 JPA를 사용할 때 @Entity 애너테이션을 붙여서 생성하는 객체로 데이터베이스의 테이블과 1:1로 매핑된다.

일부 상황에서는 Entity를 DTO 또는 VO처럼 사용하기도 한다.

 

 

 

반응형

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

[Spring Basic] 동기와 비동기  (0) 2022.07.15
[Spring Basic] MyBatis  (0) 2022.07.12
[Spring Basic] JUnit Test Framework  (0) 2022.07.09
[Spring Basic] 파라미터의 변환과 검증  (0) 2022.06.24
[Spring Basic] DispatcherServlet  (0) 2022.06.23

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Spring Basic] 동기와 비동기

    [Spring Basic] 동기와 비동기

    2022.07.15
  • [Spring Basic] MyBatis

    [Spring Basic] MyBatis

    2022.07.12
  • [Spring Basic] JUnit Test Framework

    [Spring Basic] JUnit Test Framework

    2022.07.09
  • [Spring Basic] 파라미터의 변환과 검증

    [Spring Basic] 파라미터의 변환과 검증

    2022.06.24
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (607)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (69)
      • Operating System (18)
      • Computer Network (17)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (14)
    • Life Logs (0)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바