특성 | DAO (Data Access Object) | DTO (Data Transfer Object) | VO (Value Object) |
---|
목적 | 데이터베이스와의 상호작용, 영속성 계층 구현 | 계층 간 데이터 전송 | 도메인 객체의 불변성 유지 |
기능 | 데이터베이스에 대한 CRUD 작업 수행 | 계층 간 데이터 전송 및 캡슐화 | 도메인 객체의 상태 저장 |
역할 | 영속성 계층의 역할을 수행 | 서비스 계층과 뷰 계층 간 데이터 전송 | 도메인 객체의 상태 표현 |
표현 방식 | 인터페이스 및 구현 클래스로 구성 | 클래스 또는 구조체로 구성 | 클래스로 구성 |
불변성 | 주로 가변 객체로 데이터 조작 | 주로 불변 객체로 사용 | 주로 불변 객체로 사용 |
프레임워크 종속성 | Spring 프레임워크와 연동 | 프레임워크에 종속적이지 않음 | 프레임워크에 종속적이지 않음 |
사용 예시 | | | |
public interface UserDao {
User findById(Long id);
void save(User user);
void delete(Long id);
}
public class UserDto {
private String username;
private String email;
// Getters and setters
}
public class UserVo {
private final String username;
private final String email;
// Constructor and getters
}