๐Ÿค– Backend/SpringBoot

์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ enum ํ•„๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๊ธฐ (2022.02.20)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. public enum Tier { BRONZE, // 0 SILVER, // 1 GOLD, // 2 DIAMOND // 3 } @Entity public class User { @Enumerated(EnumType.ORDINAL) // Default Setting private Tier tier; } enum์˜ ordinal ๊ฐ’์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ BRONZE : 0 SILVER : 1 ... Default Setting์ธ @Enumerated(EnumType.ORDINAL) ์€ enum์˜ ordinal ๊ฐ’์„ DB์— ์ €์žฅ ⇒ Integer ํ•„๋“œ์ฒ˜๋Ÿผ ์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•˜๋ฉด ๋จ.
์ด์ „ Velog์˜ ์™ธ๋ถ€ ์„œ๋น„์Šค ์š”์ฒญ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋ฆฌ๋ทฐ ์—…๋กœ๋“œ ์š”์ฒญ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๋Š” ๊ฐ•๊ฒฐํ•ฉ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•ด๋ณด์ž. (2023.11.02) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ ๋ฆฌ๋ทฐ๋Š” ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ์œผ๋กœ์„œ, ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฆฌ๋ทฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ  ์ด๋ฅผ ๋ถ„์„ํ•ด ๊ฐ€์น˜์žˆ๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฆฌ๋ทฐ์˜ ์—…๋กœ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ํ†ตํ•ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. AWS S3๋ฅผ ํ†ตํ•œ ์‚ฌ์ง„ ์—…๋กœ๋“œ์™€ AI ๋ฆฌ๋ทฐ ๋ถ„์„ ๋ชจ๋ธ์„ ํ†ตํ•œ ๋ฆฌ๋ทฐ ๋ถ„์„ ์š”์ฒญ์ด๋ผ๋Š” 2๊ฐœ์˜ ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ๊ฑฐ์นœ ํ›„ ใ„นใ…ฃ๋ทฐ ๋ฐ์ดํ„ฐ๊ฐ€ DB์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋™๊ธฐ๋กœ ์ž‘๋™ํ•˜๊ณ  ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ๋ทฐ๋ฅผ ์—…๋กœ๋“œํ•  ๋•Œ ์„ธ ๊ฐ€์ง€ ๊ณผ์ •์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋Š” ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ  ์™ธ๋ถ€ ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ๋ฆฌ๋ทฐ ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฐ•๊ฒฐํ•ฉ ๊ตฌ์กฐ์ด๋‹ค. ..
๋ฌธ์ œ ํŒŒ์•… ๋ณดํ†ต ์Šคํ”„๋ง์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ SQL ์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ์„ ์—์„œ ๋๋‚˜์ง€๋งŒ, ์ข…์ข… DataSource๋‚˜ DDL ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฐ’์ด DB์—์„œ ๊ด€์ธก๋  ๋•Œ๋Š” SQL ์ฟผ๋ฆฌ์— ํฌํ•จ๋œ ๊ฐ’์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” Hibernate ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SQL ์ฟผ๋ฆฌ์—๋Š” ๋ฐ”์ธ๋”ฉ๋˜๊ธฐ ์ „์˜ ์ฟผ๋ฆฌ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด binding parmater๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ฒ˜์Œ ์Šคํ”„๋ง์„ ๋ฐฐ์šธ ๋•Œ ๋ฐฐ์šด ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค. (application.properties) logging: level: org: hibernate: type: trace ์ด์ „์— ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋˜‘๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์›์ธ ๋ถ„์„ ํ˜„ ํ”„๋กœ์ ํŠธ์™€ ์ด์ „ ํ”„๋กœ์ ํŠธ ์ฐจ์ด๋ผ..
@DataJpaTest๋ฅผ ์ด์šฉํ•œ Repository ํ…Œ์ŠคํŠธ ์ค‘ ๋ณธ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์—์„œ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋˜ DDL์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. H2 ↔๏ธ MySQL ๋ฌธ๋ฒ• ์ฐจ์ด๋กœ ์ธํ•ด ํ…Œ์ด๋ธ”์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ application-test.properties ๋ฅผ ๊ณ„์† ์ˆ˜์ •ํ–ˆ์ง€๋งŒ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ๋ฌธ๋“, ์ง€๋‚œ ๋ฒˆ์—๋„ @DataJpaTest ํ…Œ์ŠคํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ๋ฅผ @AutoConfigureTestDatabase์œผ๋กœ ํ•ด๊ฒฐํ•œ ๊ธฐ์–ต์ด๋‚˜์„œ ์‹œ๋„ํ•˜์˜€๊ณ  ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค. ๊ทธ๋•Œ๋„ ๋””๋ฒ„๊น… ๊ณผ์ • ๊ธฐ๋ก์„ ๋ฏธ๋ค„๋‘๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด ์ฐธ์— ๋ธ”๋กœ๊น…ํ•˜๊ณ  ์žฅ๊ธฐ ๊ธฐ์–ต์œผ๋กœ ๊ฐ€๋ณด์ž. ๋ฌธ์ œ ๋ถ„์„ ์‹œ๋„ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ธํ„ฐ๋„ท์—๋„ ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์ • ๋ฌธ์ œ์ด๊ฑฐ๋‚˜ DDL ํ˜น์€ SQL ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋‹ค. ๊ณตํ†ต์ ..
sckwon770
'๐Ÿค– Backend/SpringBoot' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)