[java] Hibernate Validator를 사용하여 컬렉션 비어있음 유효성 검사를 수행하는 방법은 무엇인가요?
Hibernate Validator는 Java에서 유효성 검사를 수행하는 데 사용되는 강력한 라이브러리입니다. 컬렉션의 비어있음을 검사하는 유효성 검사를 수행하기 위해 다음과 같은 방법을 사용할 수 있습니다.
- 애노테이션 사용:
Hibernate Validator에서 제공하는
@NotEmpty
애노테이션을 사용하여 컬렉션의 비어있음을 검사할 수 있습니다. 이를 사용하기 위해서는 컬렉션에@NotEmpty
애노테이션을 선언해야 합니다.
import javax.validation.constraints.NotEmpty;
public class MyClass {
@NotEmpty(message = "컬렉션은 비어있으면 안 됩니다.")
private List<String> myCollection;
// getter, setter 등 생략
}
위의 예제에서는 myCollection
필드가 비어있을 경우에 유효성 검사 실패로 간주됩니다. message
속성을 사용하여 실패 메시지를 설정할 수도 있습니다.
- 커스텀 유효성 검사기 구현:
Hibernate Validator의
ConstraintValidator
인터페이스를 구현하여 커스텀 유효성 검사기를 만들 수도 있습니다. 다음은 컬렉션이 비어있지 않은지 검사하는 커스텀 유효성 검사기의 예입니다.
import java.util.Collection;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
public class NotEmptyCollectionValidator implements ConstraintValidator<NotEmptyCollection, Collection<?>> {
@Override
public void initialize(NotEmptyCollection constraintAnnotation) {
}
@Override
public boolean isValid(Collection<?> collection, ConstraintValidatorContext context) {
return collection != null && !collection.isEmpty();
}
}
위의 예제에서는 ConstraintValidator
인터페이스를 구현하고, isValid
메서드에서 컬렉션이 null이 아니고 비어있지 않은지를 검사합니다. @NotEmptyCollection
애노테이션을 사용하여 사용자 정의 유효성 검사기를 적용할 수 있습니다.
- 유효성 검사 적용:
위의 어노테이션 또는 유효성 검사기를 사용하여 유효성 검사를 수행할 객체에 해당 유효성 검사를 적용해야 합니다. Spring Framework를 사용하는 경우,
@Valid
어노테이션을 사용하여 유효성 검사를 수행할 수 있습니다. 예를 들어, 컨트롤러에서 다음과 같이 사용할 수 있습니다.
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@RequestMapping("/my-endpoint")
public void myEndpoint(@Valid @RequestBody MyClass myObject) {
// 유효성 검사 통과 시 실행할 코드
}
}
위의 예제에서는 @Valid
어노테이션을 사용하여 myObject
를 유효성 검사하는 것을 보여줍니다.
이렇게 Hibernate Validator를 사용하여 컬렉션의 비어있음을 유효성 검사하는 방법에 대해 알아보았습니다. Hibernate Validator는 다양한 유효성 검사 기능을 제공하므로, 해당 문서를 참고하여 다양한 유효성 검사 기능을 활용할 수 있습니다.
참조:
- Hibernate Validator 공식 문서: https://docs.jboss.org/hibernate/validator/7.0/reference/en-US/html_single/
- Spring Framework 참조 문서: https://docs.spring.io/spring-framework/docs/5.3.9/reference/html/web.html