๐Ÿค– Backend

์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (2023.03.13)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ vs ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)๋Š” ํ•˜๋‚˜์˜ ๋ชจ๋“ˆ์„ ๊ธฐ์ค€์œผ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ž‘๋™ํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๋˜๋Š” ๋ฉ”์†Œ๋“œ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์›น์—์„œ ๋กœ๊ทธ์ธ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ 1๊ฐœ์˜ ๋‹จ์œ„ํ…Œ์ŠคํŠธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” “์–ด๋–ค ๊ธฐ๋Šฅ์ด ์‹คํ–‰๋˜๋ฉด ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค" ์ •๋„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ(Integration Test)๋Š” ๋ชจ๋“ˆ์„ ํ†ตํ•ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ชจ๋“ˆ ๊ฐ„์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ชจ๋“ˆ๋“ค๋กœ ๊ตฌ์„ฑ์ด ๋˜๊ณ , ๋ชจ๋“ˆ๋“ค๋ผ๋ฆฌ ์ƒํ˜ธ์ž‘์šฉํ•œ๋‹ค..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ ์†Œ๋‚˜ํ๋ธŒ์™€ Jacoco๋กœ ์ฝ”๋“œ๋ฅผ ๊นจ๋—ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ (2023.09.07)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. โš™๏ธ Setup EC2 ์„œ๋ฒ„์— SonarQube ์„ค์น˜ ๋ฐ ์„ค์ • 1. ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€๋ฅผ ์œ„ํ•œ Swap ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ ๋ฐ ์„ค์น˜ touch ~/swapfile sudo fallocate -l 2G ~/swapfile sudo chmod 600 ~/swapfile sudo mkswap ~/swapfile sudo swapon ~/swapfile sudo yum install java-17-amazon-corretto-headless ์•„๋ž˜ ํŒŒ์ผ๋“ค์„ ์—ด์–ด์„œ ๊ฐ€์žฅ ์•„๋ž˜์— ์ถ”๊ฐ€ /etc/fstab ~/swapfile swap swap defaults 0 0 /etc/sysctl.conf vm.max..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ Transaction ์ด๋ž€? (2023.08.11)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๋Š˜ Swagger์˜ ์ž๋™ํ™”์™€ ๊ฐ„๋‹จํ•œ ์–ด๋…ธํ…Œ์ด์…˜์„ ํ†ตํ•ด ๋น ๋ฅธ API ๋ฌธ์„œ ๋ฐฐํฌ๋งŒ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์ž‘์—…๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์žฅ์ ์€ ์žˆ์—ˆ์ง€๋งŒ, ๋ชจ๋“  ์š”์ฒญ์„ Postman์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ณผ์ •์—์„œ ์‹ค์ˆ˜๊ฐ€ ์žˆ์„ ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๊ณ  Swagger์˜ ์ž๋™ ์ƒ์„ฑ ๋ฌธ์„œ๊ฐ€ ์นœ์ ˆํ•œ ํŽธ์€ ์•„๋‹ˆ๊ธฐ์— ์ฝ๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์ดํ•ด๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋ก ํŠธ์—์„œ API๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ณผ์ •์—์„œ ์‹ค์ˆ˜๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์ €์—๊ฒŒ ์ง์ ‘ ๋ฌผ์–ด๋ณด๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค. API ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•œ ์˜์˜๊ฐ€ ์‚ฌ๋ผ์ ธ๋ฒ„๋ฆฌ๋Š” ์ผ์ด ๋งŽ์•˜์Šต๋‹ˆ๋‹ค… ๐Ÿ˜” ์ด๋ฒˆ ๋ฆฌ๋ทฐ๋ฉ”์ดํŠธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ œํ•œ๋œ ์‹œ๊ฐ„ ๋‚ด์— FE์™€ AI ๋ชจ๋‘๊ฐ€ ์‚ฌ์šฉํ•  ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ Swagger์—์„œ MultipartFile๊ณผ DTO ํ•œ ๋ฒˆ์— ๋ฐ›๋Š” @RequestPart ์š”์ฒญ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค๊ธฐ (2023.08.29)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ ์š”์ฒญ์„ ์š”์ฒญํ•  ํ•„์š” ์—†์ด ํ•˜๋‚˜์˜ ์š”์ฒญ์—์„œ ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ํž˜๋“ค๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋”๋‹ˆ, ํ”„๋ก ํŠธ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๊ณ  Swagger์—์„œ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋‹ค. ๋ณธ ํฌ์ŠคํŒ…์€ ๋…ธ๋ ฅ์ด ํ—›๋˜์ง€ ์•Š๋„๋ก ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ณ ์ณ๋‚˜๊ฐ„ ๊ธฐ๋ก๋“ค์ด๋‹ค. 1. Request body์˜ Content-type์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Œ ๋ฌธ์ œ ์ƒํ™ฉ MultipartFile์™€ DTO๋ฅผ ํ•œ ๋ฒˆ์— ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์„ ๋งŒ๋“ค๋•Œ, ๋‹ค๋ฅธ ์—ฌํƒ€ ์š”์ฒญ๋“ค์ฒ˜๋Ÿผ @PostMapping์— URL๋งŒ ์„ค์ •ํ•˜๋ฉด Swagger์˜ Request b..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ 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์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋™๊ธฐ๋กœ ์ž‘๋™ํ•˜๊ณ  ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์ด๊ธฐ ๋•Œ๋ฌธ์—, ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฆฌ๋ทฐ๋ฅผ ์—…๋กœ๋“œํ•  ๋•Œ ์„ธ ๊ฐ€์ง€ ๊ณผ์ •์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋Š” ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ณ  ์™ธ๋ถ€ ์„œ๋น„์Šค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ๋ฆฌ๋ทฐ ์—…๋กœ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋Š” ๊ฐ•๊ฒฐํ•ฉ ๊ตฌ์กฐ์ด๋‹ค. ..
์ด์ „ Velog์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์ž (2) : ์ธ๋ฑ์Šค ํŠœ๋‹ (2023.11.12) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Github main repo / Github server repo ๋™๊ธฐ 1ํŽธ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฆฌ๋ทฐ ์กฐํšŒ๋ฅผ ์‹œ์ž‘์œผ๋กœ 500ms๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ์š”์ฒญ๋“ค์„ ์œ„์ฃผ๋กœ Cardinality/Selectivity๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ 1ํŽธ๊นŒ์ง€๋Š” ์ง„์งœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์•„๋‹ˆ์˜€๋‹ค. 2ํŽธ๋ถ€ํ„ฐ ์—ฌ๊ธฐ์–ด๋•Œ์ปดํผ๋‹ˆ ๋ฒค์ฒ˜ ํ”„๋กœ์ ํŠธ์ธ๋งŒํผ ์—ฌ๊ธฐ์–ด๋•Œ ํ™๋ณด์ž๋ฃŒ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์—์„œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด๋ณด๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐœ์„ ๊นŒ์ง€ ์ง„ํ–‰ํ•ด๋ณด์ž. ๊ธฐ์กด ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์Šค์ผ€์ผ ์—ฌํ–‰์ƒํ’ˆ: 30 (๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ 10๊ฐœ์”ฉ, ์ˆ™์†Œ, ์‹๋‹น, ๋ Œํ„ฐ์นด) ์˜ˆ์•ฝ: 540,000 (์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ 180,000) - ์—ฌํ–‰์ƒํ’ˆ ๋งˆ..
์ด์ „ Velog์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์ž (1) : ์ธ๋ฑ์Šค ์ ์šฉ (2023.10.27) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Github main repo / Github server repo ๋™๊ธฐ ์ง€๋‚œ ๋ฒˆ์— ๋‹ค์–‘ํ•œ JPA ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋น„ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ด ์ „์ฒด์ ์ธ ์„œ๋ฒ„ ์„ฑ๋Šฅ์ด ๋Œ€ํญ ํ–ฅ์ƒ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ทฐ ์กฐํšŒ API์˜ ์ผ๋ถ€ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ๋Œ€ํญ ํ–ฅ์ƒ๋˜์—ˆ์Œ์—๋„ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ •๋ ฌ๊ณผ ํ•„ํ„ฐ๋ง์„ ์ง€์›ํ•˜๋Š” ์กฐํšŒ ์ฟผ๋ฆฌ์ธ๋งŒํผ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด์ ˆ, ์ •๋ ฌ ์ ์šฉํ•˜๋Š”๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ณ , ํŠนํžˆ ๋ฆฌ๋ทฐ์˜ ๋ถ„์„ ๊ฒฐ๊ณผ ์ค‘ '์ฒญ๊ฒฐ' ์†์„ฑ์ด ํฌํ•จ๋œ ๋ฆฌ๋ทฐ๋“ค์ด๋‚˜ ๋ฆฌ๋ทฐ์˜ ๋ถ„์„ ๊ฒฐ๊ณผ ์ค‘ '์ฒญ๊ฒฐ' ์†์„ฑ์˜ '๋จผ์ง€' ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ๋ทฐ๋“ค๊ณผ ๊ฐ™์ด review ํ…Œ์ด๋ธ”๊ณผ..
์ด์ „ Velog์˜ NCP Server์— pem key๋กœ ssh ์ ‘์†ํ•˜๊ธฐ - Permission denied (publickey) (2023.12.07) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋™๊ธฐ AWS์—์„œ๋Š” SSH๋ฅผ ๊ถŒ์žฅํ•˜์ง€ ์•Š๊ณ  AWS Session Manager๋ฅผ ์“ฐ๋„๋ก ๊ถŒ์žฅํ•˜์ง€๋งŒ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋‚˜์„œ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๊ฒŒ ๊ธด๊ธ‰ํ•œ ๊ฒฝ์šฐ๋ผ AWS ๋กœ๊ทธ์ธ โžก MFA โžก EC2 Console โžก Session Manager... ๋Ž์Šค๊ฐ€ ๋„ˆ๋ฌด ๊นŠ์–ด์„œ ๊ท€์ฐฎ๋‹ค... ๊ทธ๋ž˜์„œ ๊ทธ๋‚˜๋งˆ SSH๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 1. 22๋ฒˆ ์™ธ์˜ ํฌํŠธ๋ฅผ SSH ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  2. SSH Authentication์„ ์ฒ ์ €ํžˆ ์„ค์ •ํ•œ๋‹ค. 2 ๋ฒˆ์˜ ๊ฒฝ์šฐ ๋Œ€๊ฒŒ pem key๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, NCP Server์˜..
๋ฌธ์ œ ํŒŒ์•… ๋ณดํ†ต ์Šคํ”„๋ง์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ SQL ์ฟผ๋ฆฌ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ์„ ์—์„œ ๋๋‚˜์ง€๋งŒ, ์ข…์ข… DataSource๋‚˜ DDL ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๊ฐ’์ด DB์—์„œ ๊ด€์ธก๋  ๋•Œ๋Š” SQL ์ฟผ๋ฆฌ์— ํฌํ•จ๋œ ๊ฐ’์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” Hibernate ORM์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— SQL ์ฟผ๋ฆฌ์—๋Š” ๋ฐ”์ธ๋”ฉ๋˜๊ธฐ ์ „์˜ ์ฟผ๋ฆฌ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด binding parmater๋ฅผ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, ์ฒ˜์Œ ์Šคํ”„๋ง์„ ๋ฐฐ์šธ ๋•Œ ๋ฐฐ์šด ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋‹ค. (application.properties) logging: level: org: hibernate: type: trace ์ด์ „์— ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋˜‘๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ๋ฌธ์ œ ์›์ธ ๋ถ„์„ ํ˜„ ํ”„๋กœ์ ํŠธ์™€ ์ด์ „ ํ”„๋กœ์ ํŠธ ์ฐจ์ด๋ผ..
sckwon770
'๐Ÿค– Backend' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (2 Page)