2023. 12. 24. 12:25ㆍPratice/CRUD
검증(Validation)
올바른 데이터인지 판별하는 것이 목적
전송된 데이터의 유효성을 검사하고, 오류 발생 시 각 레이어에서 적절한 조치를 취할 수 있다.
🟢 Entity
검증 오류를 추가하기 위해서는 필드에 nullable=false를 선언하여 null 값이 들어가지 않도록 설정
@Entity
@Builder
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "product")
@SequenceGenerator(
name = "product_SEQ",
sequenceName = "product_SEQ",
initialValue = 1,
allocationSize = 1)
public class ProductEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "product_SEQ")
private Integer productId;
@Column(name = "productName", length = 30, nullable = false)
private String productName;
@Column(name = "productPrice", length = 10, nullable = false)
private Integer productPrice;
}
🟢 DTO
해당 필드(변수)의 null을 허용하지 않는다는 검증 어노테이션을 활용
@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class ProductDTO {
private Integer productId;
@NotEmpty(message = "상품 이름은 필수 입력입니다.")
private String productName;
@NotNull(message = "가격은 필수 입력입니다.")
@Min(value = 0, message = "가격은 최소 0원 이상이어야 합니다.")
private Integer productPrice;
private LocalDateTime reDate;
private LocalDateTime moDate;
}
* 데이터 검증(validation) 시에 필드의 값이나 상태를 체크 방법
종류 | 설명 | ||
@NotNull | null이면 검증 오류를 발생 | ||
@NotEmpty | null이 아니고, 크기가 0이 아닌지를 검증 | 문자열일 경우, 빈 문자열("")이 아닌지를 확인 | 문자열, 컬렉션, 맵 등의 타입에서 사용 |
@NotBlank | null이 아니고, 빈 문자열이 아니며, 공백 문자가 아닌지를 검증 | 문자열이 비어있거나 공백만으로 이루어져 있으면 검증 오류를 발생 | 주로 문자열에 사용 |
💜 유효성 검사(검증오류) 종류 / 표현식
[Java] 유효성 검사 (Validation) / 검증 오류 DTO에 작성하는 방법
유효성 검사(Validation) 데이터의 일관성과 정확성을 보장 올바른 데이터인지 판별하는 것이 목적 @Validation 어노테이션으로 선언해서 사용 View에서 DTO로 값을 전달 (Controller) - 설정 DTO에서 값의 유
dalhyehye.tistory.com
🟢 Controller
@Valid 어노테이션을 사용하여 DTO에 선언된 검증 조건을 적용
BindingResult 매개변수를 통해 검증 결과를 확인
...
...
...
//삽입 처리
@PostMapping("/productinsert")
public String insertProc (@Valid ProductDTO productDTO, BindingResult bindingResult) throws Exception {
if(bindingResult.hasErrors()) {
return "/product/insert";
} productService.insert(productDTO);
return "redirect:/productlist";
}
...
...
...
//수정처리
@PostMapping("/productupdate")
public String updateProc (@Valid ProductDTO productDTO, BindingResult bindingResult) throws Exception {
if(bindingResult.hasErrors()) {
return "/product/update";
} productService.update(productDTO);
return "redirect:/productlist";
}
...
...
...
🟢 insert.html
fields.hasErrors를 통해 검증 결과를 확인하고, 필요에 따라 오류 메시지를 출력
...
...
...
<div class="mb-3 mt-3">
<label for="productName">상품명</label>
<input type="text" class="form-control" id="productName" placeholder="상품명을 입력해주세요." name="productName">
</div>
<p class="text-danger" th:if="${#fields.hasErrors('productName')}" th:errors="*{productName}"}></p>
<div class="mb-3 mt-3">
<label for="productPrice">가격</label>
<input type="text" class="form-control" id="productPrice" placeholder="가격을 입력해주세요." name="productPrice">
</div>
<p class="text-danger" th:if="${#fields.hasErrors('productPrice')}" th:errors="*{productPrice}"></p></p>
...
...
...
🟢 update.html
fields.hasErrors를 통해 검증 결과를 확인하고, 필요에 따라 오류 메시지를 출력
...
...
...
<div class="mb-3 mt-3">
<label for="productName">상품명</label>
<input type="text" class="form-control" id="productName" name="productName" th:field="*{productName}">
</div>
<p class="text-danger" th:if="${#fields.hasErrors('productName')}" th:errors="*{productName}"}></p>
<div class="mb-3 mt-3">
<label for="productPrice">가격</label>
<input type="text" class="form-control" id="productPrice"name="productPrice" th:field="*{productPrice}">
</div>
<p class="text-danger" th:if="${#fields.hasErrors('productPrice')}" th:errors="*{productPrice}"></p>
...
...
...
💚 required 속성으로만 유효성(검증) 검사 추가하는 방법
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (3-1) required로 유효성 검사
💚 서버 측에서도 검증 수행하는 방법 [Java+SpringBoot+JPA] 기본 CRUD 구현하기 (3)검증 오류 추가 검증(Validation) 올바른 데이터인지 판별하는 것이 목적 전송된 데이터의 유효성을 검사하고, 오류 발
dalhyehye.tistory.com
'Pratice > CRUD' 카테고리의 다른 글
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (5) 검색 & 페이지 기능 (0) | 2023.12.24 |
---|---|
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (4) enum으로 카테고리 추가 (0) | 2023.12.24 |
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (3-1) required로 유효성 검사 (0) | 2023.12.24 |
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (2)html (0) | 2023.12.23 |
[Java+SpringBoot+JPA] 기본 CRUD 구현하기 (1)java (1) | 2023.12.23 |