DTO, VO, DAO(Repository), Entity

YH·2023년 2월 12일
0

DTO(Data Transfer Object)

  • 계층(View, Controller, Service)간 데이터 교환을 위한 객체
  • DTO는 로직을 가지지 않고, Getter 및 Setter 메소드만 가진다.
  • 주로 요청이나 응답 값을 전달하기 위해 사용

VO(Value Object)

  • VO는 값 자체를 표현하기 위한 객체
  • 객체의 불변성(Read-Only)를 보장하며, Getter 기능만 존재한다.
  • 안에 로직을 포함할 수 있다.
  • 이름이 다른 VO 인스턴스라도, 내부에 모든 속성 값이 같다면 두 인스턴스는 동일 객체
  • 그러므로 Object클래스의 equals()와 hasCode() 메소드를 오버라이딩해서 사용하는 것이 핵심
  • 여러 테이블에 대한 공통 속성을 모아서 만든 BaseVo 클래스를 상속받아 사용할 수도 있음

DAO(Data Access Object)

  • 데이터베이스의 데이터를 접근하기 위한 객체로, DB에 접근하여 데이터를 삽입, 삭제, 조회 등의 조작을 할 수 있다.
  • 비지니스 로직과 데이터 접근 로직을 분리하기 위해 사용
  • JPA에서의 Repository와 동일한 역할

Entity

  • 실제 데이터베이스 테이블과 1:1로 매핑되는 객체로, DB에 존재하는 테이블 컬럼만을 속성(필드)로 가진다.
  • Entity 클래스는 상속을 받거나 구현체여서는 안되며, 테이블에 존재하지 않는 컬럼을 속성으로 가져서도 안됨
  • Entity와 DTO를 분리하는 주요 이유는 DB Layer와 View Layer 사이의 역할을 분리하기 위함이다.
  • Entity는 실제 테이블과 매핑되기 때문에 만일 View Layer에서 변경되면 다른 로직에도 영향을 끼칠 수 있음

<참고 URL>
https://velog.io/@maketheworldwise/DAO-DTO-VO-ENTITY

profile
하루하루 꾸준히 포기하지 말고

0개의 댓글