[java] Hibernate Validator를 사용하여 유니크한 값 유효성 검사를 수행하는 방법은 무엇인가요?
@Unique
어노테이션 만들기: 유효성 검사를 수행할 필드에@Unique
어노테이션을 사용하여 해당 필드가 유니크한 값을 가져야 함을 명시합니다. 어노테이션은 다음과 같이 생성할 수 있습니다.
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = UniqueValidator.class)
public @interface Unique {
String message() default "{unique.message}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
- 유효성 검사 로직 작성:
UniqueValidator
클래스를 생성하여 실제 유효성 검사 로직을 작성합니다. 이 클래스는ConstraintValidator
인터페이스를 구현해야 합니다. 다음은 예시 코드입니다.
public class UniqueValidator implements ConstraintValidator<Unique, Object> {
@Autowired
private YourRepository yourRepository;
private String fieldName;
@Override
public void initialize(Unique constraintAnnotation) {
fieldName = constraintAnnotation.fieldName();
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext context) {
if (value == null) {
return true;
}
// 유효성 검사 로직을 작성합니다.
return !yourRepository.existsByFieldName(fieldName, value);
}
}
- 유효성 검사 적용: 유니크한 값으로 검사하고 싶은 필드에
@Unique
어노테이션을 적용합니다.
public class YourEntity {
@Unique(fieldName = "name")
private String name;
// rest of your entity fields and methods
}
이제 Hibernate Validator가 @Unique
어노테이션이 붙은 필드에 대해 유효성 검사를 수행하게 됩니다.