
출처 : https://velog.io/@ygreenb/DTO-VO-Entity
Controller → Service → DAO → DB
그리고 다시 DB → DAO → Service → Controller → View
이 안에서 Entity/DTO/VO가 쓰인다.
╔═════════════════════╗ HTTP Request ╔═══════════════╗
║ Controller ║ <--------------------> ║ View ║
║─────────────────────║ ║──────────────═║
║ - DTO ║ ║ - DTO (Model)║
║ (Request/Response)║ ║ ║
╚══════════╤══════════╝ ╚═══════╤═══════╝
│ ▲
│ │
▼ │
╔══════════════════════════╗ │
║ Service ║ │
║──────────────────────────║ │
║ - DTO ↔ Entity Mapping ║ │
║ - 비즈니스 로직 ║ │
║ - VO (도메인 값 객체) ║ │
╚════════════╤═════════════╝ │
│ │
▼ │
╔═════════════════════╗ │
║ DAO ║ │
║─────────────────────║ │
║ - Entity CRUD ║ │
║ - Entity 반환 ║ │
╚═══════════╤═════════╝ │
│ │
▼ │
╔══════════════════════╗ │
║ Database ║ │
║──────────────────────║ │
║ - Entity 매핑 테이블 ║ │
╚══════════════════════╝ │
Controller
RequestDTO로 데이터 변환ResponseDTO로 View에 전달Service
DAO
Entity
VO
DTO
사용자 요청
/signup 요청에 JSON 데이터SignupRequestDTO로 변환Controller
signupService.signup(signupRequestDTO)Service
User Entity 생성userDao.save(userEntity)DAO
INSERT INTO user...DB
Service
SignupResponseDTO 변환Controller
| 용어 | 사용 계층 | 주요 목적 | DB 매핑 |
|---|---|---|---|
| Controller | 웹 | 요청/응답 처리 | ❌ |
| Service | 비즈니스 로직 | 로직 처리 | ❌ |
| DAO | DB 접근 | CRUD 수행 | ❌ (Entity를 통해 함) |
| Entity | DB 매핑 | 데이터 영속화 | ✅ |
| DTO | 계층 간 전달 | 데이터 전송 | ❌ |
| VO | 값 표현 | 값 불변 객체 | ❌ |