[유효성 검사]
- 애플리케이션의 비즈니스 로직이 올바르게 동작할 수 있도록 데이터를 검증
- 데이터베이스에 데이터를 저장하기 전 올바른 값인지 판별하는 작업
- 자바 진영에서는 Bean Validation이라는 유효성 검사 프레임워크를 지원하나 명세서에 불과
[Hibernate Validator]
-Bean Validation의 구현체, 이를 의존성 라이브러리에 추가하여 어노테이션을 통한 유효성 검사가 가능해진다
-어노테이션 종류
- 문자열 검증
-@null : null 값만 허용
-@NotNull : null을 허용하지 않음, ","는 허용
-@NotEmpty : null, ""을 허용하지 않음, " "는 허용
-@NotBlank : null, '',""을 허용하지 않음 - 최댓값/최솟값 검증
-@Min(value = $number) : number 이상의 값을 허용
-@Max(value = $number) : number 이하의 값을 허용 - 값의 범위 검증
-@Positive : 양수를 허용
-@PositiveOrZero : 0을 포함한 양수를 허용
-@Negative : 음수를 허용
-@NegativeOrZero : 0을 포함한 음수를 허용 - 시간에 대한 검증
-@Future : 현재보다 미래의 날짜를 허용
-@FutureOrPresent : 현재를 포함한 미래의 날짜를 허용
-@Past : 현재보다 과거의 날짜를 허용
-@PastOrPresent :현재를 포함한 과거의 날짜를 허용 - 이메일 검증
-@Email : 이메일 형식을 검사. "는 허용 - 자릿수 범위 검증
-@Digits(integer = $number1, fraction = $number2) : number1 크기의 정수 자릿수와 number2 크기의 소수 자릿수를 허용 - Boolean 검증
-@AssertTrue : true인지 검사
-@AssertFalse: false인지 검사
-둘 다 NULL인 경우는 무시한다 - 문자열 길이 검증
-@Size(min = $number1, max = $number2): number1 이상 number2 이하의 범위를 허용 - 정규식 커스텀
-@Pattern(regexp = "$표현식") : 정규식을 통해 검사(자바의 Pattern 패키지의 형식)
-https://adjh54.tistory.com/104
-ChatGPT 활용하기
[Dto에 실제 적용하기]
-도메인 객체인 DTO에 유효성 검사를 실시하여 독립적으로 각 레이어에서 검증된 객체를 활용할 수 있음
//MemberReqeustDto
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Getter
@Setter
public class MemberRequestDto {
@NotBlank
private Integer studentId;
@NotBlank
@Size(min = 2, max = 4)
private String name;
@NotBlank
private String generation;
@NotBlank
private String club;
}
-이때 RestController에서 @Valid 어노테이션을 선언해 주어야 Dto에서 선언한 Validation 어노테이션들이 적용됨
//MemberController
...
@PostMapping("/registration")
public ResponseEntity<MemberResponseDto> registerMember(@Valid @RequestBody MemberRequestDto memberRequestDto){
...
'Backend > 스프링' 카테고리의 다른 글
| 스프링부트 스터디 4주차 - Spring Data JPA 및 연관매핑 (0) | 2023.08.23 |
|---|---|
| 스프링부트 스터디 3주차 - 데이터베이스 연동 (0) | 2023.08.22 |
| 스프링부트 스터디 2주차 - 프로젝트 생성 및 API 구현 (0) | 2023.08.02 |