ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

@NotEmpty

 
 

Annotation

 

environment
variables

 

What ?

@NotEmpty

Java 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보다 커야 합니다.

사용 예시:

Java
 
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 어노테이션이 함께 적용되어 길이 제한도 설정되었습니다.

 

728x90