MVC 패턴 + VO/DTO/DAO/Entity

임유진·2025년 7월 14일

목록 보기
1/7

출처 : https://velog.io/@ygreenb/DTO-VO-Entity


MVC 기본 흐름

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

    • 사용자의 HTTP 요청을 받음
    • RequestDTO로 데이터 변환
    • Service 호출
    • 결과를 ResponseDTO로 View에 전달
  • Service

    • 비즈니스 로직 처리
    • DAO 호출하여 Entity 조회/저장
    • Entity ↔ DTO 변환
    • 필요한 경우 VO 사용 (예: Money, Period 등 값 객체)
  • DAO

    • Entity에 대한 CRUD 수행
    • DB와 직접 통신
  • Entity

    • DB 테이블에 매핑되는 객체
  • VO

    • 값 객체 (주로 Service 로직에서 사용)
  • DTO

    • Controller ↔ Service ↔ View 간 데이터 운반

회원 가입 예시

  1. 사용자 요청

    • /signup 요청에 JSON 데이터
    • SignupRequestDTO로 변환
  2. Controller

    • signupService.signup(signupRequestDTO)
  3. Service

    • User Entity 생성
    • userDao.save(userEntity)
  4. DAO

    • INSERT INTO user...
  5. DB

    • Entity 저장
  6. Service

    • 저장된 Entity → SignupResponseDTO 변환
  7. Controller

    • 응답 JSON 반환

용어사용 계층주요 목적DB 매핑
Controller요청/응답 처리
Service비즈니스 로직로직 처리
DAODB 접근CRUD 수행❌ (Entity를 통해 함)
EntityDB 매핑데이터 영속화
DTO계층 간 전달데이터 전송
VO값 표현값 불변 객체
profile
말하는 고구마

0개의 댓글