[java] Hibernate Validator를 사용하여 유효성 검사를 수행하기 전에 데이터 변환을 어떻게 수행하나요?

Hibernate Validator는 Java Bean 유효성 검사를 수행하기 위한 강력한 도구입니다. 그러나 때로는 입력된 데이터를 유효성 검사하기 전에 특정 형식으로 변환해야 할 수도 있습니다. 이러한 경우에는 Hibernate Validator에서 제공하는 데이터 변환 기능을 사용할 수 있습니다.

데이터 변환을 수행하려면 먼저 변환기(Converter)를 작성해야 합니다. 변환기는 javax.validation.ConstraintValidator 인터페이스를 구현해야 하며, convert 메서드를 오버라이딩하여 데이터를 변환하는 로직을 구현합니다.

다음은 예시 코드입니다.

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

public class MyConverter implements ConstraintValidator<MyConversionAnnotation, String> {
    
    @Override
    public void initialize(MyConversionAnnotation annotation) {
        // 초기화 로직
    }
    
    @Override
    public boolean isValid(String value, ConstraintValidatorContext context) {
        // 데이터 변환 로직 구현
        // 변환된 데이터의 유효성 검사 결과를 반환
    }
    
    @Override
    public String convert(String value) {
        // 데이터 변환 로직 구현
        // 변환된 데이터 반환
    }
}

위의 예시 코드에서 MyConversionAnnotation은 사용자 정의 어노테이션으로, 이 어노테이션을 사용하여 데이터 변환을 수행할 필드를 지정해줍니다.

변환기를 작성한 후에는 변환을 수행할 필드에 @Convert(converter = MyConverter.class) 어노테이션을 추가합니다. 이를 통해 Hibernate Validator는 유효성 검사 전에 해당 필드의 데이터를 변환기를 통해 변환합니다.

이렇게 데이터 변환을 수행하면 Hibernate Validator를 사용하면서 유효성 검사 이전에 데이터 변환을 간단하게 수행할 수 있습니다.