- 역할:
- DTO: 데이터를 전송하는 역할
- DAO: 데이터를 저장하고 접근하는 역할
- 구성:
- DTO: 단순한 데이터 홀더 (필드, getter/setter)
- DAO: 데이터베이스 연산을 수행하는 메서드 (CRUD, 쿼리 실행)
- 위치:
- DTO: 계층 간 데이터 교환에 사용 (주로 프레젠테이션 계층과 비즈니스 계층 간)
- DAO: 비즈니스 계층과 데이터베이스 계층 간의 인터페이스
- 변경성:
- DTO: 불변(immutable) 객체로 설계될 수 있음
- DAO: 상태가 변할 수 있는 객체 (데이터베이스 연산에 따라)
- 사용 목적:
- DTO: 네트워크 통신, API 응답/요청 등에서 데이터 전송을 위해 사용
- DAO: 데이터베이스 연산과 관련된 로직을 캡슐화
1. DTO (Data Transfer Object)
목적:
- DTO는 계층 간 데이터 전송을 위한 객체입니다.
- 주로 프레젠테이션 계층과 비즈니스 계층 간에 데이터를 주고받을 때 사용됩니다.
- 네트워크 통신이나 API 호출에서 데이터를 담아서 전송하는 용도로 사용됩니다.
특징:
- 단순한 데이터 구조: DTO는 주로 필드와 getter/setter 메서드만을 가지고 있는 단순한 클래스입니다.
- 불변성: DTO는 불변(immutable) 객체로 설계되는 경우가 많습니다. 데이터를 안전하게 전송하고 수정할 수 없도록 합니다.
- 직렬화 가능: 대부분의 경우 직렬화 가능한 객체로 설계되어 네트워크를 통해 데이터를 전송하거나 파일에 저장할 수 있습니다.
- 데이터 캡슐화: 데이터의 전송을 위한 순수한 데이터를 캡슐화합니다.
2. DAO (Data Access Object)
목적:
- DAO는 데이터베이스나 다른 영구 저장소에 접근하기 위한 객체입니다.
- 주로 데이터베이스 조작(읽기, 쓰기, 업데이트, 삭제)과 관련된 로직을 캡슐화합니다.
- 비즈니스 계층과 데이터베이스 계층 간의 추상화를 제공합니다.
특징:
- 데이터베이스 연동: DAO는 데이터베이스 연산을 수행하는 메서드를 포함하고 있으며, SQL 쿼리 또는 JPA/Hibernate와 같은 ORM(Object-Relational Mapping) 프레임워크를 사용합니다.
- 캡슐화: 데이터베이스와의 상호 작용을 캡슐화하여, 데이터베이스 접근 코드를 비즈니스 로직에서 분리합니다.
- 인터페이스 기반: DAO 패턴은 인터페이스를 사용하여 데이터 접근 로직을 정의하고, 구체적인 구현체는 이를 구현합니다.
- 트랜잭션 관리: 트랜잭션을 관리하고 데이터베이스 연결을 처리합니다.
결론
주고 받을때는 DTO - 조작할 때는 DAO
'CS' 카테고리의 다른 글
lombok AllArgsConstructor를 안쓰는 이유 (0) | 2024.10.08 |
---|---|
IP 와 Port 그리고 Socket (0) | 2024.08.08 |
delete method는 form-data를 못쓴다. (0) | 2024.08.07 |
Process 와 Thread (0) | 2024.06.10 |
세션과 토큰 쿠키 (1) | 2024.06.10 |