๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“— JPA

[Spring Data JPA] JPA Enum ํ•„๋“œ์— ๊ด€ํ•œ ๋ฌธ์ œ

by GroovyArea 2023. 2. 21.

์ฐธ๋‚˜.

์˜ค๋Š˜ 5์‹œ๊ฐ„ ๋‚ ๋ ธ๋‹ค.

Pagination ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋Š” API์—์„œ ๊ณ„์† 500 ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ๊ณ„์† ๋ถ™์žก๊ณ  ์žˆ์—ˆ๋‹ค.

 

๋นจ๋ž˜ ๋•œ์— ์ง‘์— ์™”์ง€๋งŒ ๋ถˆ๊ตด์˜ ์˜์ง€๋กœ ํ•ด๊ฒฐํ•ด๋ณด๋ฆฌ๋ผ ๋‹ค์งํ•˜๊ณ  1์‹œ๊ฐ„๋งŒ์— ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค ์ฆ๋ง.

 

๋ฌธ์ œ์ 

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด ์„œ๋ฒ„ DB์— ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€์„œ์˜€๋‹ค.

 

๋ฌธ์ œ๋Š” JPA Enum ํ•„๋“œ๊ฐ€

@Enumerated(EnumType.STRING)

ใ…ฃ์ด ์•„๋‹ˆ๋ผ, Ordinal๋กœ ๋“ค์–ด๊ฐ€ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋‹ค.

 

์ง€์ •ํ•œ Enum ์ƒ์ˆ˜๋Š” ์ด 4๊ฐœ ์ด๋ฉฐ, ordinal์˜ ๋ฒ”์œ„๋Š” 0~3 ์ด๋‹ค.

4 ์ด์ƒ์˜ ์ˆซ์ž๋Š” ์žˆ์–ด์„œ๋Š” ์•ˆ๋  ๋ฐ์ดํ„ฐ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ณ„์† ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 4

 

์ฟผ๋ฆฌ๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋Š” ๊ณผ์ •์—์„œ 5์˜ ordinal ์ด ์—†์–ด index๋ฅผ 5๋กœ ์žก์•„๋†จ์ง€๋งŒ, ๋งคํ•‘์„ ๋ชปํ•˜๋Š” ๋ฐ”๋žŒ์— ์ €๋Ÿฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ 5๋กœ ๋“ค๊ฐ€์žˆ๋‹ค.

DB ๋ฐ์ดํ„ฐ ์ค‘ ์ˆซ์ž๊ฐ€ 5์ธ ๊ฒƒ์„ ๊ฒจ์šฐ ๋ฐœ๊ฒฌํ–ˆ๊ณ , ์ˆ˜์ •ํ–ˆ๋‹ค.

๊ทผ๋ฐ, ์™œ ์ž˜๋ชป๋œ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ์ง€?? ์•„์ง๋„ ์˜๋ฌธ์ด๋„ค..

 

๊ณ ์ฐฐ

ํ•œ์ฐฝ JPA๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ๊น€์˜ํ•œ๋‹˜์˜ ์ฑ…์„ ์ฝ๊ณ , ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ๊ฐ€์Šด์— ์ƒˆ๊ธด ๋ง์€ Enumerated String์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๋ง์ธ๋ฐ, 

๋ญ ๋ฌธ์ž์—ด๋กœ DB ์— ์ €์žฅํ•˜๋ฉด ๋ญ ๊ฐ€๋…์„ฑ ์ข‹๊ณ , ์‰ฝ๊ฒŒ ํŒŒ์•…๋˜๋‹ˆ ์ข‹๊ฒ ์ง€ ํ•˜๋ฉฐ ๋„˜๊ฒผ๋‹ค.

 

ordinal๋กœ ํ–ˆ์„ ๋•Œ์˜ ๋‹จ์ ์€ ์ˆซ์ž์ด๊ธฐ์— ๊ฐ’์˜ ์˜๋ฏธ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค์–ด ๋‹จ์ˆœํžˆ ๊ฐ€๋…์„ฑ์ด ์ข‹์ง€ ์•Š๊ฒ ๊ตฌ๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์ž˜๋ชป๋œ ordinal ์ˆซ์ž ๊ฐ’์ด ๋“ค์–ด๊ฐ”์„ ๋•Œ๋Š”, ์ด๋Ÿฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฑฐ๋ผ๊ณ  ์ƒ์ƒ์„ ๋ชปํ–ˆ๋‹ค.

๋ฌด์—‡๋ณด๋‹ค ์ž˜๋ชป๋œ ์ˆซ์ž๊ฐ€ ๋‹น์—ฐํžˆ ๋“ค์–ด๊ฐˆ๋ฆฌ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

์˜ค๋Š˜ ํ•˜๋‚˜ ๋ฐฐ์šฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค.

์›ฌ๋งŒํ•˜๋ฉด String ์ „๋žต์„ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ํ•˜๊ณ , DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ ๋” ์ฒดํฌํ•ด๋ณด์ž๋ผ๋Š” ๊ฒฐ๋ก ์„ ์–ป์—ˆ๋‹ค.

๋‹ค์‹œ๋Š” ์ด๋Ÿฐ ์‚ฝ์งˆ ์•Š์•„์•ผ์ง€..

 

 

๋ฐ˜์‘ํ˜•