JAVA

DTO, VO, DAO, Entity

bergerac 2025. 3. 24. 09:11

데이터를 목적에 따라 정의하는 구조체

DTO( 데이터를 전달하기 위한 객체 ), VO( 값 자체를 포현하는 객체 ), DAO( Database에 접근하는 역할을 하는 객체), Entity (실제 DB 테이블과 매핑되는 클래스 )에 대해 알아볼 예정이다.

 

DTO( Data Transfer Object)

  • 계층 간 데이터 교환을 위해 사용하는 객체
  • 로직을 가지지 않은 순수한 데이터 객체(Getter/Setter)만을 가짐
  • 주로 DB에서 데이터를 갖고오거나 통신(FrontEnd)에서 요청하거나 응답할 때 데이터를 담아 전달할 때 사용한다.
class UserSignInRequestDto{
    private String userId;
    private String password;
}

 

VO(Value Object)

  • 값 자체를 표현하는 객체
  • 데이터를 담는 용도(데이터 수정x, 불변성, 읽기전용)
  • 한번 생성되면 내용 변경이 불가능하다.
  • 주로 필드값을 final 설정을 하게 된다. 
  • Getter 만을 가진다.
@AllArgsConstructor
@Getter
class Address{
    private final String city;
    private final String zipcode;
    
}

 

DAO(Data Access Object)

  • Database에 접근하는 역할을 하는 객체이다.
  • 서비스 모델과 데이터베이스를 연결하는 역할을 한다
  • 데이터의 CRUD작업을 실행하는 클래스이다.
  • 비즈니스 로직에서 DB의 직접적인 조작 없이 데이터를 다룬다.

ex) 사용자 로그인 후 아이디랑 닉네임을 포함하여 응답을 처리해준다

class UserSignInResponseDto{
    private String userId;
    private String nickName;
}

*DAO클래스. 사용자 데이터베이스와 연관된 작업을 모두 명시하며 로그인한 사용자 데이터를 단건 조회해준다.

class UserDao{
    public UserSignInResponseDto getUserById(String userId){
        String id = "kong9411";
        String nickname = "bergerac";
        
        return new UserSignInResponseDto(id,nickname);
    }

}

Entity

  • 실제 DB 테이블과 매핑되는 클래스. 실제로 존재한다. 
  • 데이터와 직접적으로 연결되는 백엔드 로직에 있어서 데이터베이스의 테이블에 해당하는 데이터 구조와 일치하는 클래스를 만든다.
  • 데이터베이스에 있는 모든 정보를 클래스로 정의한다.
  • JPA(Java Persistence API)와 같은 ORM(Object Related Mapping)클래스에서 사용
  • DB의 각 레코드와 매핑된다.(테이블 형식을 따른다.
class User{
    private Long id;
    private String userID;
    private String password;
    private String name;
    private String email;
    private Date signUpDate;
}

'JAVA' 카테고리의 다른 글

ENUM (열거형) 자료형  (1) 2025.03.23
Wrapper Class  (1) 2025.03.22
Stream API  (1) 2025.03.21
메서드 참조 (Lambda)  (0) 2025.03.20
람다식(Lambda) - 함수형 인터페이스 4가지(Predicate, Function, Consumer, Supplier)  (1) 2025.03.19