Annotation

environment
variables
What ?
@NotEmptyJava Bean Validation API (javax.validation.constraints.NotEmpty 또는 jakarta.validation.constraints.NotEmpty) 에서 제공하는 어노테이션으로, 특정 필드나 요소가 비어 있지 않아야 함을 나타냅니다. "비어 있지 않음"의 기준은 데이터 타입에 따라 다르게 적용됩니다.
- String 타입: null이 아니고, 길이가 0보다 커야 합니다 (빈 문자열 "" 허용 안 함).
- Collection 타입 (List, Set 등): null이 아니고, 요소가 하나 이상 포함되어 있어야 합니다.
- Map 타입: null이 아니고, 엔트리가 하나 이상 포함되어 있어야 합니다.
- 배열 타입: null이 아니고, 길이가 0보다 커야 합니다.
주요 특징:
- 역할: 해당 필드나 요소가 null이 아니고, "비어 있지 않은" 값을 가져야 함을 명시합니다.
- 적용 대상: 필드, 메서드, 파라미터, 어노테이션 타입에 적용할 수 있습니다.
- 반환 타입: 유효성 검증 실패 시 ConstraintViolation 객체를 통해 에러 메시지를 제공합니다.
- 메시지 지정: @NotEmpty 어노테이션의 message 속성을 사용하여 유효성 검증 실패 시 출력될 사용자 정의 에러 메시지를 지정할 수 있습니다.
데이터 타입별 "비어 있지 않음"의 기준:
- String:
- null이 아니어야 합니다.
- 길이가 0보다 커야 합니다 ("" (빈 문자열)은 유효하지 않습니다).
- Collection (List, Set 등):
- null이 아니어야 합니다.
- isEmpty() 메서드가 false를 반환해야 합니다 (요소가 하나 이상 포함되어 있어야 합니다).
- Map:
- null이 아니어야 합니다.
- isEmpty() 메서드가 false를 반환해야 합니다 (엔트리가 하나 이상 포함되어 있어야 합니다).
- 배열 (Object[], int[] 등):
- null이 아니어야 합니다.
- 길이가 0보다 커야 합니다.
사용 예시:
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Size;
public class Product {
@NotEmpty(message = "상품 이름은 필수 항목입니다.")
private String name;
@NotEmpty(message = "상품 코드는 필수 항목입니다.")
@Size(min = 5, max = 10, message = "상품 코드는 5자 이상 10자 이하이어야 합니다.")
private String code;
@NotEmpty(message = "카테고리는 필수 항목입니다.")
private List<String> categories;
@NotEmpty(message = "태그는 필수 항목입니다.")
private Set<String> tags;
@NotEmpty(message = "속성은 필수 항목입니다.")
private Map<String, String> attributes;
@NotEmpty(message = "이미지 목록은 필수 항목입니다.")
private String[] images;
private String description;
// ... (생성자, getter, setter)
}
위 예시에서 @NotEmpty 어노테이션은 name, code, categories, tags, attributes, images 필드에 적용되어 해당 필드들이 null이 아니고 비어 있지 않은 값을 가져야 함을 명시합니다. code 필드에는 @Size 어노테이션이 함께 적용되어 길이 제한도 설정되었습니다.