카테고리 없음

검증(Validation) 정리

creator7087 2025. 3. 28. 20:09

1. Validation이란?

클라이언트에서 전송한 데이터가 유효한지 확인하는 과정. 데이터를 검증하여 오류를 방지하고, 안정적인 애플리케이션 운영을 돕는다.

2. Validation의 역할

  1. 검증을 통해 적절한 메시지를 사용자에게 제공해야 한다.
  2. 검증 오류로 인해 시스템이 비정상적으로 동작해서는 안 된다.
  3. 사용자가 입력한 데이터는 검증 과정에서 사라지지 않고 유지되어야 한다.

3. 검증의 종류

검증 방식특징장점단점
프론트 검증 클라이언트(UI)에서 검증 수행 빠른 피드백 제공 보안에 취약
서버 검증 백엔드에서 요청 데이터를 검증 필수적인 보안 조치 프론트 없이 단독 사용 시 UX 저하
데이터베이스 검증 DB의 제약 조건(Not Null 등)으로 검증 최종 방어선 역할 검증 시점이 가장 늦음

4. Spring에서의 Validation

  • BindingResult
    • Errors 인터페이스를 상속받아 검증 오류를 저장하고 조회하는 역할
    • Spring에서 검증 시 활용하는 객체
    • 검증 대상 객체 바로 뒤에 위치해야 함
  • Bean Validation
    • 표준 검증 방식으로, Hibernate Validator를 주로 사용
    • 주요 어노테이션: @NotBlank, @NotNull, @NotEmpty 등

5. @ModelAttribute vs. @RequestBody

구분@ModelAttribute@RequestBody
바인딩 방식 필드 단위로 개별 바인딩 객체 단위로 바인딩
검증 방식 일부 필드 오류가 있어도 나머지 필드 검증 가능 특정 필드 오류 발생 시 전체 객체 검증 불가능
변환 실패 시 컨트롤러 호출 및 검증 진행 컨트롤러 호출 자체가 안 됨

🔍 핵심 질문

  1. 프론트, 서버, 데이터베이스 검증을 모두 수행해야 하는 이유는 무엇인가?
  2. BindingResult를 사용하는 이유와 Errors 인터페이스와의 차이점은?
  3. @ModelAttribute와 @RequestBody의 가장 큰 차이점은 무엇인가?