"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JPA 2.0/Hibernate에서 필드 조합을 검증하는 방법은 무엇입니까?

JPA 2.0/Hibernate에서 필드 조합을 검증하는 방법은 무엇입니까?

2024년 11월 11일에 게시됨
검색:908

How to Validate Combinations of Fields in JPA 2.0/Hibernate?

JPA 2.0/Hibernate에서 필드 조합 유효성 검사

JPA 2.0/Hibernate 유효성 검사를 사용할 때 여러 필드를 조합해야 합니다. 예를 들어, getValue1() 및 getValue2():

public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}

getValue1() 및 getValue2()가 모두 null이면 모델이 유효하지 않은 것으로 간주되어야 하며 이는 잘못된 데이터를 나타냅니다.

클래스 수준 제약 조건: 솔루션

이러한 유효성 검사를 처리하기 위해 JPA 2.0/Hibernate는 클래스 수준 제약 조건을 제공합니다. 이러한 제약 조건은 개별 속성 대신 전체 클래스 인스턴스에 적용됩니다. 이 접근 방식은 상호 관련된 필드의 유효성을 검사하는 유연성을 제공합니다.

제약 조건 정의

AddressAnnotation이라는 클래스 수준 제약 조건을 정의하여 필드 조합의 유효성을 검사합니다. 특정 속성이 아닌 클래스에 이 제약 조건을 적용하려면 @Target을 ElementType.TYPE으로 설정합니다.

@Constraint(validatedBy = MultiCountryAddressValidator.class)
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AddressAnnotation {
    String message() default "{error.address}";
    Class>[] groups() default { };
    Class extends Payload>[] payload() default { };
}

검증기 구현

다음으로 검증기 구현 MultiCountryAddressValidator를 만듭니다. 이 클래스는 객체 인스턴스를 수신하고 결합된 필드 유효성 검사를 수행합니다.

public class MultiCountryAddressValidator implements ConstraintValidator {
    ...
    // Implement the isValid() method to define the validation logic
}

이 구현에서는 객체 인스턴스의 여러 필드(이 경우 주소)에 액세스하고 필요한 유효성 검사 규칙을 적용할 수 있습니다.

모델 클래스에 주석 달기

마지막으로 AddressAnnotation으로 MyModel 클래스에 주석을 답니다.

@AddressAnnotation
public class MyModel {
    ...
}

클래스 수준 제약 조건을 활용하면 Hibernate 검증을 사용하여 강력하고 유연한 방식으로 필드 조합을 효과적으로 검증할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3