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