[스프링부트] 32. @NotEmpty

백하림's avatar
Apr 17, 2025
[스프링부트] 32. @NotEmpty
package shop.mtcoding.blog.user; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; import lombok.Data; public class UserRequest { @Data public static class UpdateDTO { @NotEmpty(message = "유저네임을 입력하세요.") @Pattern(regexp = "^[a-zA-Z0-9]{2,20}$", message = "유저네임은 2-20자이며, 특수문자, 한글이 포함될 수 없습니다.") private String username; @NotEmpty(message = "비밀번호를 입력하세요. 비밀번호는 4자 이상 20자 이하 입니다.") @Size(min = 4, max = 20) private String password; @NotEmpty(message = "이메일을 입력하세요.") @Pattern(regexp = "^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\\.[a-zA-Z]{2,3}$", message = "이메일 형식으로 작성해주세요.") private String email; } // insert 용도의 dto에는 toEntity 메서드를 만든다. @Data public static class JoinDTO { @NotEmpty(message = "유저네임을 입력하세요.") @Pattern(regexp = "^[a-zA-Z0-9]{2,20}$", message = "유저네임은 2-20자이며, 특수문자, 한글이 포함될 수 없습니다.") private String username; @NotEmpty(message = "비밀번호를 입력하세요. 비밀번호는 4자 이상 20자 이하 입니다.") @Size(min = 4, max = 20) private String password; @NotEmpty(message = "이메일을 입력하세요.") @Pattern(regexp = "^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\\.[a-zA-Z]{2,3}$", message = "이메일 형식으로 작성해주세요.") private String email; public User toEntity() { return User.builder() .username(username) .password(password) .email(email) .build(); } } @Data public static class LoginDTO { @NotEmpty(message = "유저네임을 입력하세요.") @Pattern(regexp = "^[a-zA-Z0-9]{2,20}$", message = "유저네임은 2-20자이며, 특수문자, 한글이 포함될 수 없습니다.") private String username; @NotEmpty(message = "비밀번호를 입력하세요. 비밀번호는 4자 이상 20자 이하 입니다.") @Size(min = 4, max = 20) private String password; private String rememberMe; // check되면 on, 안되면 null } }

📌 핵심!

@NotEmpty"이 필드는 꼭 있어야 하고, 비어 있으면 안 돼!" 라고 정하는 규칙입니다.
  • 글자(String): 한 글자라도 있어야 함 ("" 안 됨)
  • 목록(Collection): 아이템이 하나 이상 있어야 함 (텅 빈 목록 안 됨)
  • 지도(Map): 뭔가 들어 있어야 함 (텅 빈 지도 안 됨)
  • 배열: 아이템이 하나 이상 있어야 함 (텅 빈 배열 안 됨)

⚙️ 코드 속 @NotEmpty 사용법

  • @NotEmpty: "이 name 필드는 비어 있으면 안 돼!" 라고 규칙 설정
  • message: 규칙을 어겼을 때 보여줄 친절한 안내 메시지

🧐 왜 쓸까요? (데이터 무결성)

데이터가 엉망이 되는 걸 막기 위해서!
  • 필수 정보 누락 방지: 꼭 필요한 정보(이름, 비밀번호 등)를 사용자가 빼먹지 않도록 강제
  • 프로그램 오류 예방: 비어 있는 값 때문에 프로그램이 오작동하는 상황 방지
  • 데이터베이스 깨끗하게 유지: 의미 없는 빈 값이 데이터베이스에 저장되는 것을 막음

✅ 정리!

@NotEmpty필수적인 데이터를 꼭 채우도록 강제하는 착한 규칙입니다! 덕분에 프로그램이 더 안정적이고 데이터베이스도 깨끗해져요! 😊
Share article

harimmon