Java | DTO, DAO, VO

Lumpen·2025년 4월 15일
0

Java

목록 보기
19/38

DTO (Data Transfer Object): 데이터 전송 객체

서로 다른 계층 간에 데이터를 효율적으로 전달하는 데 사용되는 객체

주요 역할:

  • 여러 개의 관련 데이터를 하나의 객체로 묶어서 전달하여 데이터 전송 효율성을 높인다
  • 계층 간 데이터 교환을 위한 규약 역할
  • 데이터를 캡슐화하여 코드의 가독성을 향상시킨다

특징:

  • 주로 필드(멤버 변수)와 Getter/Setter 메서드로 구성
  • 비즈니스 로직을 포함하지 않고 순수하게 데이터를 담는 역할만 한다
  • 직렬화 및 역직렬화가 가능하여 네트워크를 통한 데이터 전송에 용이
  • 불변 객체로 설계하여 데이터의 안정성을 높일 수도 있다

DAO (Data Access Object): 데이터 접근 객체

데이터베이스와 같은 데이터 저장소에 접근하여 데이터를 CRUD 하는 역할을 담당한다

주요 역할:

  • 데이터 접근 로직을 비즈니스 로직에서 분리하여 코드의 가독성과 유지보수성을 높인다
  • 특정 데이터베이스 기술에 종속적인 코드를 캡슐화하여 데이터베이스 독립성을 확보
  • 일관된 데이터 접근 방식을 제공하여 코드 재사용성을 높인다
  • 데이터 접근 과정에서 발생하는 예외를 처리

특징:

  • 데이터베이스 연결 관리, SQL 실행, 결과 매핑 등의 로직을 포함
  • 주로 인터페이스와 구현 클래스 형태로 구성
  • 데이터베이스 기술 (JDBC, ORM 등)을 사용하여 데이터 저장소와 상호작용
  • 데이터를 DTO나 Entity 형태로 주고받는다

VO (Value Object): 값 객체

값 자체를 표현하는 불변 객체로
동일성을 비교할 때 객체의 상태(모든 필드의 값)가 동일하면 같은 객체로 취급한다

주요 역할:

특정 도메인 개념을 나타내는 값을 캡슐화 (예: 주소, 날짜, 통화 등)
값의 의미를 명확하게 표현하고 코드의 가독성을 높인다
불변성을 통해 객체의 안정성과 예측 가능성을 높인다

특징:

  • 주로 필드(멤버 변수)와 Getter 메서드로 구성되며, Setter 메서드는 제공하지 않거나 private으로 설정하여 값의 변경을 막는다
  • equals()와 hashCode() 메서드를 오버라이드하여 객체의 내용 기반 비교를 구현
  • 생성 시 초기화된 값은 변경할 수 없다

profile
떠돌이 생활을 하는. 실업자, 부랑 생활을 하는

0개의 댓글