‡๐Ÿ‘ฉ‍๐Ÿ’ป ‡/ºSpring

[Spring] JPA(Hibernate)์„ ์ด์šฉํ•œ ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ

Trudy | ์†ก์—ฐ 2023. 12. 26. 16:37

Spring Boot๋Š” Hibernate Validator์™€ ๊ฐ™์€ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์›ํ•œ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ์™ธ๋ถ€๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

Hibernate Validator๋Š” Bean Validation ์ŠคํŽ™์˜ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜๋กœ, ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ฒ€์ฆ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


 

๐Ÿ“Hibernate Validator ์–ด๋…ธํ…Œ์ด์…˜ 

 

@NotNull

       ํ•„๋“œ๊ฐ€ null์ด ์•„๋‹Œ์ง€ ํ™•์ธ

 

@NotEmpty 

        ๋ฌธ์ž์—ด, ์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด ๋“ฑ์ด null์ด ์•„๋‹ˆ๊ณ  ๋น„์–ด์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธ

 

@NotBlank

        ๋ฌธ์ž์—ด์ด null์ด ์•„๋‹ˆ๊ณ  ๊ณต๋ฐฑ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ํ™•์ธ

 

@Size(min, max)

        ๋ฌธ์ž์—ด, ์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์ง„ ๋ฒ”์œ„์— ์†ํ•˜๋Š”์ง€ ํ™•์ธ

 

@Email 

        ๋ฌธ์ž์—ด์ด ์ด๋ฉ”์ผ ํ˜•์‹์— ๋งž๋Š”์ง€ ํ™•์ธ

 

@Pattern(regex) 

        ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„ ์ •๊ทœ์‹ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ

 

๐ŸŒŸ @Valid  

        ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด DTO ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ™œ์„ฑํ™” !! (์ด๊ฑธ ๋‹ฌ์•„์ค˜์•ผ ๊ฒ€์ฆ ๊ฐ€๋Šฅ)

        BindingResult๋ฅผ ํ†ตํ•ด ๊ฒ€์ฆ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ณ  ์ถ”๊ฐ€์ ์ธ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ


๐Ÿ“etc

 

@Column

@Column(length = 50)
String email;

 

: ๊ธธ์ด๊ฐ€ 50์ธ String์ด ์ €์žฅ๋จ

nullable = true๊ฐ€ default์ด๋ฏ€๋กœ null์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. notnull ์„ค์ •ํ•˜๋ ค๋ฉด false๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ฑธ์–ด์ค˜์•ผ ํ•œ๋‹ค. 

 


[์ฃผ์˜] NotNull,  NotBlank, NoEmpty  vs Column(nullable=false)

 

@Column(nullable=false)

        ํ•„๋“œ๊ฐ€ null์ด ์•„๋‹Œ์ง€ ํ™•์ธ

 

nullable์˜ default๊ฐ€ true์ด๋‹ค.

@notnull๊ณผ @Column(length=50)์„ ํ•จ๊ป˜ ์จ์ฃผ๋ฉด notnull์„ Column์ด ๋ฎ์–ด์จ๋ฒ„๋ ค์„œ not null ์„ค์ •์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ Column๊ณผ notNull์„ ํ•จ๊ป˜ ์จ์ค„ ๋•Œ๋Š” ์ด ๋ถ€๋ถ„์„ ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค. 


@Email vs @Pattern

๋ณดํ†ต Email ์–ด๋…ธํ…Œ์ด์…˜๋ณด๋‹ค ๋ฐ‘ Pattern์œผ๋กœ ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉ

@Pattern(regexp = " ^[a-zA-z0-9+-\\_.] + @naver.com + $ ")

 

์ผ๋ฐ˜ ์–ด๋…ธํ…Œ์ด์…˜๋ณด๋‹ค ์ •๊ทœ ํ‘œํ˜„์‹์„ ์ฐพ์•„์„œ ํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค! 

์ •๊ทœ ํ‘œํ˜„์‹์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋งํฌ๋ฅผ ๊ฑธ์–ด๋‘”๋‹ค

..

https://coding-factory.tistory.com/819

 

[Web] ์ •๊ทœํ‘œํ˜„์‹ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ ๋ชจ์Œ ์ด์ •๋ฆฌ

์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋‹ค ๋ณด๋ฉด ์ด ๋ฌธ๋ฒ•์ด ๋งž๋Š”์ง€ ์•„๋‹Œ์ง€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ ์–ธ์–ด๋งˆ๋‹ค ์ •๊ทœํ‘œํ˜„์‹์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ ๋ถ€๋ถ„๋„ ์žˆ์–ด ํ…Œ์ŠคํŠธ๋ฅผ ๋งŽ์ด ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ ์ž์ฒด ํ…Œ์ŠคํŠธ๋กœ

coding-factory.tistory.com