<aside> 📖

학습 목표


1. Bean Validation 개요

1-1. Bean Validation이란?

Bean Validation은 자바 객체의 속성 값이 특정 제약 조건을 만족하는지를 선언적으로 검증할 수 있게 해주는 표준입니다. 대표적인 구현체로는 Hibernate Validator가 있으며, javax.validation 또는 jakarta.validation 패키지를 통해 사용합니다.

1-2. 의존성 추가

Spring이나 Jakarta EE 외의 순수 Java 환경에서는 다음과 같이 Hibernate Validator 의존성을 직접 추가해야 합니다:

<!-- Maven -->
<dependency>
    <groupId>org.hibernate.validator</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>8.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.glassfish</groupId>
    <artifactId>jakarta.el</artifactId>
    <version>4.0.2</version>
</dependency>
// Gradle (Groovy DSL)
dependencies {
    implementation 'org.hibernate.validator:hibernate-validator:8.0.1.Final'
    implementation 'org.glassfish:jakarta.el:4.0.2'
}

2. 주요 검증 애노테이션 정리

2-1. 문자열 검증 애노테이션

2-1-1. @NotNull, @NotEmpty, @NotBlank

public class UserForm {
    @NotNull(message = "이름은 null일 수 없습니다")
    private String name;

    @NotEmpty(message = "이메일은 비어있을 수 없습니다")
    private String email;

    @NotBlank(message = "비밀번호는 공백일 수 없습니다")
    private String password;
}
애노테이션 설명
@NotNull null 불허
@NotEmpty null과 "" 불허
@NotBlank null, "", 공백(" ") 불허

2-1-2. @Size, @Length

public class ProductForm {
    @Size(min = 2, max = 50, message = "제품명은 2~50자 사이여야 합니다")
    private String name;

    @Length(min = 10, max = 1000, message = "제품 설명은 10~1000자 사이여야 합니다")
    private String description;
}

애노테이션 설명
@Size 문자열, 배열, 리스트 등 길이/크기 검증
@Length 문자열 길이 전용 (Hibernate 전용)

2-1-3. @Email, @Pattern

public class ContactForm {
    @Email(message = "유효한 이메일 형식이어야 합니다")
    private String email;

    @Pattern(regexp = "^\\\\d{3}-\\\\d{3,4}-\\\\d{4}$", message = "전화번호 형식에 맞지 않습니다")
    private String phoneNumber;
}