[java] Hibernate Validator를 사용하여 신용 카드 번호 유효성 검사를 수행하는 방법은 무엇인가요?
  1. 의존성 추가:
    <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>
    
  2. 엔티티 클래스 작성:
    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 생략
       
    }
    
  3. 검증 수행:
    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>>을 통해 유효성 검사 결과를 확인할 수 있습니다.

참고 자료: