> Java > java지도 시간 > 본문

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

Linda Hamilton
풀어 주다: 2024-11-05 22:30:02
원래의
269명이 탐색했습니다.

How to Validate Multiple Fields in Combination in JPA 2.0/Hibernate?

조합된 여러 필드 유효성 검사

JPA 2.0/Hibernate에서 여러 필드에 대한 간단한 @NotNull 주석은 개별 필드만 유효성을 검사합니다. 필드 조합의 유효성을 검사하려면 클래스 수준 제약 조건 사용을 고려하세요.

Bean 유효성 검사 미리보기 파트 II: 사용자 정의 제약 조건에 설명된 대로 클래스 수준 제약 조건을 사용하면 개체 내의 여러 속성에 유효성 검사 논리를 적용할 수 있습니다. . 이는 여러 필드에 의존하는 복잡한 유효성 검사 규칙에 특히 유용합니다.

구현

클래스 수준 제약 조건을 구현하려면 주석(@AddressAnnotation)과 제약 조건을 정의하세요. 유효성 검사기(MultiCountryAddressValidator). 주석은 적용할 유효성 검사 규칙을 지정하고 유효성 검사기는 필드 조합의 유효성을 검사하는 논리를 구현합니다.

@AddressAnnotation 
public class Address {
    @NotNull @Max(50) private String street1;
    @Max(50) private String street2;
    @Max(10) @NotNull private String zipCode;
    @Max(20) @NotNull String city;
    @NotNull private Country country;
}

public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> {
    public boolean isValid(Address object, ConstraintValidatorContext context) {
        // Validate zipcode and city depending on the country
        // ...
    }
}
로그인 후 복사

유효성 검사기에서 객체 인스턴스는 isValid 메소드에 전달되어 모든 개체에 대한 액세스를 허용합니다. 유효성 검사를 위한 필드입니다. 유효성 검사기는 우편번호와 도시 간의 상관 관계와 같은 필드 간의 상호 의존성을 확인할 수 있습니다.

Usage

한 번 정의되면 클래스 수준 제약 조건을 적용할 수 있습니다. 주석을 사용하는 모델 클래스:

@AddressAnnotation
public class MyModel {
    public Integer getValue1() {
        //...
    }
    public String getValue2() {
        //...
    }
}
로그인 후 복사

이 주석은 MultiCountryAddressValidator를 사용해야 함을 나타냅니다. getValue1()과 getValue2()의 조합을 검증합니다. 두 필드가 모두 null이면 모델이 유효하지 않은 것으로 간주됩니다. 그렇지 않으면 모델이 유효합니다.

위 내용은 JPA 2.0/Hibernate에서 조합된 여러 필드를 검증하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!