JPA 2.0/Hibernate에서 필드 조합 유효성 검사
JPA 2.0/Hibernate 유효성 검사를 사용할 때 여러 필드를 조합해야 합니다. 예를 들어 getValue1() 및 getValue2() 필드가 있는 모델을 생각해 보세요.
<code class="java">public class MyModel { public Integer getValue1() { //... } public String getValue2() { //... } }</code>
getValue1() 및 getValue2()가 모두 null(잘못된 데이터를 나타냄)인 경우 모델은 잘못된 것으로 간주되어야 합니다.
클래스 수준 제약 조건: 솔루션
이러한 유효성 검사를 처리하기 위해 JPA 2.0/Hibernate는 클래스 수준 제약 조건을 제공합니다. 이러한 제약 조건은 개별 속성 대신 전체 클래스 인스턴스에 적용됩니다. 이 접근 방식은 상호 연관된 필드의 유효성을 검사하는 데 유연성을 제공합니다.
제약 조건 정의
AddressAnnotation이라는 클래스 수준 제약 조건을 정의하여 필드 조합의 유효성을 검사합니다. 이 제약 조건을 특정 속성이 아닌 클래스에 적용하려면 @Target을 ElementType.TYPE으로 설정하세요.
<code class="java">@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 { }; }</code>
유효성 검사기 구현
다음으로 유효성 검사기를 생성합니다. 구현 MultiCountryAddressValidator. 이 클래스는 개체 인스턴스를 수신하고 결합된 필드 유효성 검사를 수행합니다.
<code class="java">public class MultiCountryAddressValidator implements ConstraintValidator<AddressAnnotation, Address> { ... // Implement the isValid() method to define the validation logic }</code>
이 구현에서는 개체 인스턴스의 여러 필드(이 경우 주소)에 액세스하고 필요한 유효성 검사 규칙을 적용할 수 있습니다.
모델 클래스에 주석 달기
마지막으로 MyModel 클래스에 AddressAnnotation으로 주석을 답니다.
<code class="java">@AddressAnnotation public class MyModel { ... }</code>
클래스 수준 제약 조건을 활용하면 효과적으로 유효성을 검사할 수 있습니다. Hibernate 검증을 사용하여 강력하고 유연한 방식으로 필드를 조합합니다.
위 내용은 JPA 2.0/Hibernate에서 필드 조합을 검증하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!