[java] Hibernate Validator를 사용하여 신용 카드 번호 유효성 검사를 수행하는 방법은 무엇인가요?
- 의존성 추가:
<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.16.Final</version> </dependency>
- 엔티티 클래스 작성:
import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; public class CreditCard { @NotNull(message = "카드 번호는 필수 입력 항목입니다.") @Pattern(regexp = "^[0-9]{16}$", message = "카드 번호는 16자리 숫자여야 합니다.") private String cardNumber; // Getter 및 Setter 생략 }
- 검증 수행:
import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import java.util.Set; public class CreditCardValidator { public static void main(String[] args) { CreditCard creditCard = new CreditCard(); creditCard.setCardNumber("1234567890123456"); Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); Set<ConstraintViolation<CreditCard>> violations = validator.validate(creditCard); for (ConstraintViolation<CreditCard> violation : violations) { System.out.println(violation.getMessage()); } } }
위 코드에서는 CreditCard
클래스에 @NotNull
어노테이션을 사용하여 카드 번호가 비어있는지 확인하고, @Pattern
어노테이션을 사용하여 카드 번호가 16자리 숫자인지 확인합니다. 유효성 검사 시 Validator
객체를 사용하여 validate
메소드를 호출하고, 반환된 Set<ConstraintViolation<CreditCard>>
을 통해 유효성 검사 결과를 확인할 수 있습니다.
참고 자료:
- Hibernate Validator 공식 문서: https://docs.jboss.org/hibernate/validator/6.0/reference/en-US/html_single/
- Java Validation API 문서: https://beanvalidation.org/2.0/spec/