[java] Hibernate Validator를 사용하여 컬렉션 비어있음 유효성 검사를 수행하는 방법은 무엇인가요?

Hibernate Validator는 Java에서 유효성 검사를 수행하는 데 사용되는 강력한 라이브러리입니다. 컬렉션의 비어있음을 검사하는 유효성 검사를 수행하기 위해 다음과 같은 방법을 사용할 수 있습니다.

  1. 애노테이션 사용: Hibernate Validator에서 제공하는 @NotEmpty 애노테이션을 사용하여 컬렉션의 비어있음을 검사할 수 있습니다. 이를 사용하기 위해서는 컬렉션에 @NotEmpty 애노테이션을 선언해야 합니다.
import javax.validation.constraints.NotEmpty;

public class MyClass {
    @NotEmpty(message = "컬렉션은 비어있으면 안 됩니다.")
    private List<String> myCollection;
    // getter, setter 등 생략
}

위의 예제에서는 myCollection 필드가 비어있을 경우에 유효성 검사 실패로 간주됩니다. message 속성을 사용하여 실패 메시지를 설정할 수도 있습니다.

  1. 커스텀 유효성 검사기 구현: 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 애노테이션을 사용하여 사용자 정의 유효성 검사기를 적용할 수 있습니다.

  1. 유효성 검사 적용: 위의 어노테이션 또는 유효성 검사기를 사용하여 유효성 검사를 수행할 객체에 해당 유효성 검사를 적용해야 합니다. 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는 다양한 유효성 검사 기능을 제공하므로, 해당 문서를 참고하여 다양한 유효성 검사 기능을 활용할 수 있습니다.

참조: