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