[JSCODE] 4회차

HanjmoΒ·2023λ…„ 5μ›” 21일
0

🎯 λͺ©ν‘œ

  • μœ νš¨μ„± 검사
  • μ˜ˆμ™Έ 처리

✏️ λ‚΄μš©

1. μœ νš¨μ„± 검사

κ²Œμ‹œκΈ€μ˜ 제λͺ©κ³Ό λ‚΄μš©μ— λŒ€ν•œ μœ νš¨μ„± 검사λ₯Ό μœ„ν•œ μ• λ…Έν…Œμ΄μ…˜μ„ κ±Έμ–΄μ£Όμ—ˆλ‹€.

@NotBlank(message = "제λͺ©μ€ 곡백 없이 1κΈ€μž 이상 15κΈ€μž μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.")
@Size(min = 1, max = 15, message = "제λͺ©μ€ 곡백 없이 1κΈ€μž 이상 15κΈ€μž μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.")
private String title;

@NotEmpty(message = "λ‚΄μš©μ€ 1κΈ€μž 이상 1000κΈ€μž μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.")
@Size(min = 1, max = 1000, message = "λ‚΄μš©μ€ 1κΈ€μž 이상 1000κΈ€μž μ΄ν•˜μ—¬μ•Ό ν•©λ‹ˆλ‹€.")
private String content;

이 κ³Όμ •μ—μ„œ @NotNull, @NotBlank, @NotEmpty 차이도 μ•Œκ²Œ λ˜μ—ˆλ‹€.
κ°„λ‹¨ν•˜κ²Œ μ •λ¦¬ν•˜μžλ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

  • @NotNull: null ν—ˆμš© X
  • @NotEmpty: null, "" ν—ˆμš© X
  • @NotBlank: null, "", " "(곡백) ν—ˆμš© X

2. μœ νš¨μ„± 검사 μœ„μΉ˜

validation μ• λ…Έν…Œμ΄μ…˜μ„ 엔티티와 dto λ‘˜ 쀑에 어디에 λΆ™μΌκΉŒ κ³ λ―Όν•˜λ‹€κ°€ dto에 λΆ™μ—¬μ£Όμ—ˆλŠ”λ°, κ·Έ μ΄μœ λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

  • 데이터λ₯Ό μ „λ‹¬ν•˜λŠ” dtoμ—μ„œ μœ νš¨μ„± 검사λ₯Ό μˆ˜ν–‰ν•˜λ©΄, ν΄λΌμ΄μ–ΈνŠΈλ‚˜ λ‹€λ₯Έ κ³„μΈ΅μœΌλ‘œ κ²€μ¦λœ 데이터λ₯Ό 전달할 수 μžˆλ‹€.
  • 엔티티에 μœ νš¨μ„± 검사 λ‘œμ§μ„ 넣지 μ•Šμ•„λ„ 됨으둜써 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

3. @Column을 ꡳ이?

dto에 validation μ• λ…Έν…Œμ΄μ…˜μ„ λΆ™μ—¬μ£Όλ‹€κ°€ 문득 @Column(length = 15)같은 컬럼 맀핑 μ• λ…Έν…Œμ΄μ…˜λ„ λΆ™μ—¬μ€˜μ•Ό ν•˜λŠ”μ§€ κΆκΈˆν–ˆλ‹€.

이미 λ°μ΄ν„°μ˜ μœ νš¨μ„±μ„ κ²€μ‚¬ν•œ λ‹€μŒμ— DB둜 λ„˜κ²¨μ£ΌλŠ”λ° ꡳ이 @Column을 ν†΅ν•΄μ„œ μ œμ•½ 쑰건을 걸어쀄 ν•„μš”κ°€ μžˆλ‚˜ μ‹Άμ—ˆκ³ , λ©˜ν† λ‹˜κ»˜ 이에 λŒ€ν•œ μ§ˆλ¬Έμ„ λ“œλ Έλ‹€.

λŒμ•„μ˜¨ λŒ€λ‹΅μ€ "λΆ™μ—¬μ£Όμ–΄μ•Ό ν•œλ‹€"μ˜€λ‹€.
μ •ν™•νžˆλŠ” DB에 μ œμ•½μ‘°κ±΄μ„ 직접 걸어쀬닀면 엔티티에도 λ˜‘κ°™μ΄ λͺ…μ‹œν•΄μ€˜μ•Ό ν•œλ‹€κ³  ν•˜μ…¨λ‹€.

κ·Έ μ΄μœ λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆμ—ˆλŠ”λ° κ·Έ 쀑 κ°€μž₯ 와닿은 것은 가독성을 λ†’μ—¬μ€€λ‹€λŠ” 점과 개발자의 μ‹€μˆ˜λ₯Ό 방지할 수 μžˆλ‹€λŠ” μ μ΄μ—ˆλ‹€.

4. μ˜ˆμ™Έ 처리

μ˜ˆμ™Έ 처리λ₯Ό μ–΄λ–€ λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•˜λŠ”μ§€ 감이 μ•ˆ μž‘ν˜€μ„œ μ§€μΈμ—κ²Œ 도움을 μš”μ²­ν–ˆκ³ , @ExceptionHandler와 @RestControllerAdviceλ₯Ό 톡해 λͺ¨λ“  μ˜ˆμ™Έλ₯Ό ν•œ κ³³μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” μ „λž΅μ— λŒ€ν•΄μ„œ μ•Œκ²Œ λ˜μ—ˆλ‹€.

예제 μ½”λ“œλ₯Ό μ°Έκ³ ν•˜μ—¬ κ΅¬ν˜„ν•˜κΈ°λ§Œ ν•΄μ„œ, ν•΄λ‹Ή κ°œλ…μ— λŒ€ν•΄ 깊게 ν•™μŠ΅ν•˜κ³  슀슀둜 λ‹€μ‹œ ν•œ 번 κ΅¬ν˜„ν•  μ˜ˆμ •μ΄λ‹€.

πŸ’¬ 회고

μš”μ²­ν•œ λ°μ΄ν„°μ˜ μœ νš¨μ„± κ²€μ‚¬λŠ” λ„ˆλ¬΄λ‚˜ μ€‘μš”ν•˜λ‹€.
ν•˜μ§€λ§Œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ κ²€μ‚¬ν•˜κ³ , μ˜ˆμ™ΈκΉŒμ§€ μ²˜λ¦¬ν•˜λŠ”μ§€ 잘 λͺ°λΌμ„œ λ°°μ›Œμ•Όμ§€ λ°°μ›Œμ•Όμ§€ ν•˜λ©΄μ„œ 미루게 λ˜μ—ˆλ‹€.
κ·ΈλŸ¬λ‹€κ°€ 이번 κΈ°νšŒμ— μœ νš¨μ„± 검사와 μ˜ˆμ™Έ μ²˜λ¦¬μ— λŒ€ν•œ 전체적인 방법을 μ•Œκ²Œ λ˜μ—ˆκ³ , 이제 슀슀둜 ν• λ§Œν•  것 κ°™λ‹€λŠ” 생각이 λ“ λ‹€.

λΆ€μ‘±ν•œ λΆ€λΆ„ & κ°œμ„  λ°©ν–₯

  • 검색 ν‚€μ›Œλ“œμ— λŒ€ν•œ μœ νš¨μ„± 검사
    -> String νƒ€μž…μ˜ ν‚€μ›Œλ“œλ₯Ό κ²€μ‚¬ν•˜λŠ”κ²Œ μ•„λ‹ˆλΌ @RequestBody에 PostSearch 클래슀λ₯Ό 직접 λ‹΄μ•„ μ²˜λ¦¬ν•  μ˜ˆμ •μ΄λ‹€.

0개의 λŒ“κΈ€