<aside> 📖
학습 목표
Bean Validation은 자바 객체의 속성 값이 특정 제약 조건을 만족하는지를 선언적으로 검증할 수 있게 해주는 표준입니다. 대표적인 구현체로는 Hibernate Validator가 있으며, javax.validation 또는 jakarta.validation 패키지를 통해 사용합니다.
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'
}
@NotNull, @NotEmpty, @NotBlankpublic class UserForm {
@NotNull(message = "이름은 null일 수 없습니다")
private String name;
@NotEmpty(message = "이메일은 비어있을 수 없습니다")
private String email;
@NotBlank(message = "비밀번호는 공백일 수 없습니다")
private String password;
}
| 애노테이션 | 설명 |
|---|---|
@NotNull |
null 불허 |
@NotEmpty |
null과 "" 불허 |
@NotBlank |
null, "", 공백(" ") 불허 |
@Size, @Lengthpublic 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 전용) |
@Email, @Patternpublic class ContactForm {
@Email(message = "유효한 이메일 형식이어야 합니다")
private String email;
@Pattern(regexp = "^\\\\d{3}-\\\\d{3,4}-\\\\d{4}$", message = "전화번호 형식에 맞지 않습니다")
private String phoneNumber;
}