본문 바로가기
Java

DAO,DTO,VO,Entity

by 개발자공부 2024. 6. 21.

DAO (Data Access Object) - Database에 접근하는 역할을 하는 객체

● 프로젝트의 서비스 모델에 해당하는 부분과 데이터베이스를 연결하는 역할을 한다.

● 데이터의 CRUD 작업을 시행하는 클래스이다.

● 효율적인 커넥션 관리와 보안성을 위해 사용한다.

● DAO는 비즈니스 로직을 분리하여 도메인 로직으로부터 DB와 관련한 메커니즘을 숨기기 위해 사용한다.

// 1. DAO 인터페이스
// 2. DAO 인터페이스를 구현한 클래스

DTO (Data Transfer Object) - 데이터를 전달하기 위한 객체

● 로직을 가지지 않는 순수한 데이터 객체(getter & setter만 가진 클래스)

● 여러 레이어간 데이터를 주고 받을 때 사용할 수 있고 주로 View와 Controller 사이에서 활용한다.

● getter&setter외에 다른 비즈니스 로직은 포함하지 않는다.

● 어떻게 구현하느냐에 따라 가변 객체로 활용할 수도 있고 불변 객체(final)로 활용할 수도 있다.

+) 데이터를 변환하거나 담는 개념이며, 메서드를 사용할 수 있다.


VO (Value Object) - 값 자체를 표현하는 객체

● DTO와 유사하나 그와 달리 setter를 가지고 있지 않아서 값이 변할 일이 없다. (read-Only)

● getter()메소드를 포함해서 비즈니스 로직도 포함할 수 있다.

● "두 객체의 모든 필드 값들이 동일하면 두 객체는 같다"가 핵심 정의이다. 그렇기 때문에 완전히 값 자체 표현 용도로만 사용하는게 목적이라면 두 객체의 모든 필드 값들이 모두 같으면 같은 객체이도록 만드는 것(equals()와 hashCode()의 오버라이딩)이 중요한 것이지 메소드는 어떤 메소드가 있던지 상관 없다.


Entity

● 실제 DB테이블과 매핑이 되는 클래스

● 데이터를 전달하는 클래스로 사용하면 안된다.

● Entity를 기준으로 테이블이 형성되고 칼럼이 변경되고는 한다.

● 비즈니스 로직을 포함할 수도 있고, setter()메소드를 포함할 수도 있다.