๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

db13

[DB] ์ธ๋ฑ์Šค ๊ฐ„๋žต ์ •๋ฆฌ [1] ์ธ๋ฑ์Šค๋žœ๋ค & ์ˆœ์ฐจ IO๋””์Šคํฌ ํ—ค๋”๋ฅผ 1๋ฒˆ, ์—ฌ๋Ÿฌ๋ฒˆ ์˜ฎ๊ธฐ๋Š๋ƒ? ์ฆ‰, ๋””์Šคํฌ์˜ ์„ฑ๋Šฅ์€ ๋””์Šคํฌ ํ—ค๋” ์œ„์น˜ ์ด๋™ ์—†์ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๋ฒˆ์— ๊ธฐ๋กํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๊ฒฐ์ •Mysql ๋Š” ๊ทธ๋ฃน ์ปค๋ฐ‹, ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ ๋ฒ„ํผ, InnoDB ๋กœ๊ทธ ๋ฒ„ํผ ๋“ฑ์˜ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐœ์„ ๊ฒฐ๊ตญ ๋žœ๋ค IO ๋ฅผ ์ค„์ด๋Š” ๊ฒƒ์ด ์ฟผ๋ฆฌ๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ์ •์˜ArrayList ์™€ SortedList ์˜ ์ฐจ์ด๋ฅผ ์•„๋Š”๊ฐ€?์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ or ์ •๋ ฌํ•˜์—ฌ ์ €์žฅ๋น ๋ฅด๊ฒŒ ์ ์žฌ or ๋Š๋ฆฌ์ง€๋งŒ ์ •๋ ฌํ•˜์—ฌ ์ ์žฌ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์–ด๋Š ์ •๋„ ํฌ๊ธฐํ•˜๊ณ , ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ํƒํ•˜๊ฒ ๋‹ค.B-Tree ์—์„œ ์ธ๋ฑ์Šค ํ‚ค ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์‹œ๋ณดํ†ต์˜ ๊ฒฝ์šฐ, ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ ๋น„์šฉ 1 ๊ฐ€์ • ์‹œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€ ๋น„์šฉ์„ 1.5 ๋กœ ์˜ˆ์ธกํ•˜๋Š” ํŽธ.์ธ๋ฑ์Šค ํ‚ค ์‚ญ์ œ์™€ ๋ณ€๊ฒฝ์˜ ๊ฒฝ์šฐ, InnoDB ์—”์ง„์— .. 2024. 6. 29.
[DB] ํŠธ๋žœ์žญ์…˜๊ณผ ๋ฝ ๊ฐ„๋žต ์ •๋ฆฌ ํŠธ๋žœ์žญ์…˜ํŠธ๋žœ์žญ์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ์ž…์žฅ์—์„œ, ๊ณ ๋ฏผํ•ด์•ผ ํ•  ๋ฌธ์ œ๋ฅผ ํ’€์–ด์ฃผ๋Š” ํ•„์ˆ˜์ ์ธ DBMS ์˜ ๊ธฐ๋Šฅ.ํŠธ๋žœ์žญ์…˜ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜์‚ฌํ•ญDBMS ์˜ ์ปค๋„ฅ์…˜๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ผญ ํ•„์š”ํ•œ ์ตœ์†Œ์˜ ์ฝ”๋“œ์—๋งŒ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ผ๋Š” ์˜๋ฏธ. ๊ฐ ๋‹จ์œ„ํ”„๋กœ๊ทธ๋žจ์ด ์ปค๋„ฅ์…˜์„ ์†Œ์œ ํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜๋ก ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ์œ  ์ปค๋„ฅ์…˜์˜ ๊ฐœ์ˆ˜๋Š” ์ค„์–ด๋“ ๋‹ค. ๋ฉ”์ผ ์ „์†ก์ด๋‚˜, ํŒŒ์ผ ์ „์†ก ์ž‘์—… ๋“ฑ, ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ์ž‘์—…์€ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ œ๊ฑฐํ•˜๋ผ. ์›น ์„œ๋ฒ„๋ฟ ์•„๋‹ˆ๋ผ DBMS ์„œ๋ฒ„๊นŒ์ง€ ์œ„ํ—˜ํ•œ ์ƒํ™ฉ ๋ฐœ์ƒ ์ €์žฅ ๋ฐ์ดํ„ฐ์˜ ๋‹จ์ˆœ ์กฐํšŒ์˜ ๊ฒฝ์šฐ๋„ ํŠธ๋žœ์žญ์…˜์— ํฌํ•จํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.๋ฝ๋ ˆ์ฝ”๋“œ ๋ฝ๋ ˆ์ฝ”๋“œ ์ž์ฒด๋งŒ์„ ์ž ๊ทธ๋Š” ๊ฒƒ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ๋ ˆ์ฝ”๋“œ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ, ์ธ๋ฑ์Šค์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ž ๊ทผ๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ๋‚ด๋ถ€.. 2024. 6. 27.
[Spring Data JPA] JPA Enum ํ•„๋“œ์— ๊ด€ํ•œ ๋ฌธ์ œ ์ฐธ๋‚˜. ์˜ค๋Š˜ 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 ์ฟผ๋ฆฌ.. 2023. 2. 21.
[Spring Data JPA] ํ•œ๋ฐฉ ์ฟผ๋ฆฌ์˜ ํšจ๋Šฅ (feat : JPQL) ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ๊ธฐ๋ณธ ์†Œ์–‘์ธ SQL์„ ์ž‘์„ฑํ•˜๋Š” ์‹ค๋ ฅ์€ ๋›ฐ์–ด๋‚  ์ˆ˜๋ก ๋”ํ•  ๋‚˜์œ„ ์—†๋‹ค. ์‹ค์ œ๋กœ ๋Œ€๊ทœ๋ชจ ํŠธ๋ž˜ํ”ฝ์ด ๋ฐœ์ƒํ•˜๋Š” ์„œ๋น„์Šค์—์„œ๋Š” ์ด ์„ฑ๋Šฅ์„ ๋งค์šฐ ์ค‘์š”์‹œ ํ•˜๋Š”๋ฐ, ์ผ๋ฐ˜์ ์ธ ํ™˜๊ฒฝ์—์„œ๋Š” DB ์กฐํšŒ์  ์ธก๋ฉด์—์„œ ํฐ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์ด๋Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๊ฐœ์„  ๋ฐฉ์•ˆ์ด๋ผ๊ณ ๋“ค ํ•œ๋‹ค. SQL์„ ๊ณต๋ถ€ํ•˜๊ณ , JPA ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉฐ ํ•ญ์ƒ ๋น ์งˆ ์ˆ˜ ์—†๋Š” ์–˜๊ธฐ, ์„ฑ๋Šฅ ์ตœ์ ํ™”. ํ•ญ์ƒ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ฐœ์„ ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์กŒ๊ณ , ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ๋‚ด ์ƒ๊ฐ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ์ •๋ฆฌํ•ด๋ณด๊ฒ ๋‹ค. DB ERD Model opnions entity๋ฅผ paging ์ฒ˜๋ฆฌํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋ฝ‘์•„์•ผ ํ•˜๋Š” ์ƒํ™ฉ. ์ฃผ์–ด์ง„ ์ค‘์š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” user_id ๋ฟ์ด๋‹ค. 1. ๋ณดํ†ต ๊ฐ™์œผ๋ฉด Document Entity๋ฅผ ๋จผ์ € ์กฐํšŒํ•œ ํ›„, opinions ๋ฅผ ํŽ˜์ด์ง• .. 2023. 2. 1.
๋™์‹œ์„ฑ ์กฐํšŒ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐ ์„ฑ๋Šฅ์— ๊ด€ํ•œ ๊ณ ๋ฏผ [Lock, Queue, Redis] ์ฃผ๋ฌธ ๊ฑด์— ๋Œ€ํ•œ ์ƒํ’ˆ ์žฌ๊ณ  ํŒŒ์•… ๋™์‹œ์„ฑ ๊ด€๋ จ ์ด์Šˆ์— ๋Œ€ํ•ด ๊ณ ๋ฏผํ•œ ํ•˜๋ฃจ๋‹ค. ํ”„๋กœ์ ํŠธ ๋ฆฌํŒฉํ† ๋ง์„ ์‹œ์ž‘ํ•˜๋ฉฐ ์ง€๋‚œ ๋„๋ฉ”์ธ๋“ค์€ ๊ธฐ๋ณธ crud API๋งŒ์„ ๋‹ค๋ฃจ์—ˆ๋‹ค. 5์ผ๋™์•ˆ JPA ๊ฐ•์˜๋“ค์„ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ API ๋ฆฌํŒฉํ† ๋ง์— ๋‹ค์‹œ ์ฐฉ์ˆ˜ํ–ˆ๋‹ค. ์•„๋ฌด๋ž˜๋„ ํ”„๋กœ์ ํŠธ์˜ ํ† ํ”ฝ์ด ์‡ผํ•‘๋ชฐ์ด๋‹ˆ ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ ํŒŒํŠธ์—์„œ ๋‹จ์ˆœ CRUD๊ฐ€ ์•„๋‹Œ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์‹ถ์–ด, ์™ธ๋ถ€ ๊ฒฐ์ œ API ๋ฐ ๋””์ž์ธ ํŒจํ„ด์„ ์ ์šฉํ•œ ๊น”๋”ํ•œ ์ฝ”๋“œ๋“ค์„ ๊ณ ๋ คํ•˜๋ฉฐ ์ž‘์„ฑํ•˜๋Š” ์ค‘์ด๋‹ค. ๋Œ€๋žต์ ์ธ ํ‹€์„ ๋งŒ๋“  ๋’ค, ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ฃผ๋ฌธ์„ ๊ตฌํ˜„ํ•˜๋˜ ์ค‘, ๋™์‹œ์„ฑ ์ด์Šˆ ๋ฌธ์ œ์— ์ง๋ฉดํ–ˆ๋‹ค. ๊ธฐ์กด ๋™์‹œ์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• MSA๋ฅผ ๊ณ ๋ คํ–ˆ๊ธฐ์—, ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Outbox pattern์„ ์ด์šฉ์ค‘์ด์—ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ํ†ตํ•ด ์ƒํ’ˆ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์—ˆ๋‹ค. .. 2022. 9. 14.
DB ์ˆ˜์ • & jpa ์„ธํŒ… ํ”„๋กœ์ ํŠธ์˜ ์ „๋ฐ˜์ ์ธ ๋ฆฌํŒฉํ„ฐ๋ง์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉฐ, ๊ธฐ์กด mybatis๋ฅผ ์ด์šฉํ–ˆ๋˜ ๊ฒƒ์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ์™”๋‹ค. ํ•˜์ง€๋งŒ SQL Mapper๋ฅผ ์ด์šฉํ•œ ์„ค๊ณ„ ํŠน์„ฑ์ƒ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ์ฝ”๋“œ์˜ ์ž‘์„ฑ์ด ์–ด๋ ค์› ๊ณ , ๋˜ ๊ธฐ์กด DB ์„ค๊ณ„์˜ ๋ฌธ์ œ๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. DB์˜ ์ „๋ฐ˜์ ์ธ ์ˆ˜์ •๊ณผ ๋”๋ถˆ์–ด, JPA๋ฅผ ์ด์šฉํ•ด ๋‹ค์‹œ ๋ฆฌํŒฉํ„ฐ๋ง์„ ํ•ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •์„ ๋‚ด๋ ธ๋‹ค. ๊ทธ ์ˆ˜์ •๊ณผ์ •๊ณผ JPA ์„ธํŒ… ๋ฐฉ๋ฒ•์„ ๋‚˜์—ดํ•ด๋ณด๊ฒ ๋‹ค. https://github.com/GroovyArea/My-ChickenBreast-Shop GitHub - GroovyArea/My-ChickenBreast-Shop: shop api with spring boot shop api with spring boot . Contribute to GroovyArea/My-ChickenB.. 2022. 8. 8.
2022.06.02 ใ€ŒDB ๋™์‹œ์„ฑ ๋ฌธ์ œใ€ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์›น ํ”„๋กœ๊ทธ๋žจ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋™์‹œ์„ฑ ๊ด€๋ จ ๋ฌธ์ œ๋ฅผ ์ž˜ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋“ค์—ˆ๋‹ค. ์ด๋ฒˆ์— ๋‚ด๊ฐ€ ํ•˜๋Š” ์‡ผํ•‘๋ชฐ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๊ทธ ์ด์Šˆ๊ฐ€ ๋”ฑ ํ„ฐ์กŒ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ช‡ ๋งŒ ๋ช…์ด ํ•œ์ •๋œ ์žฌ๊ณ ์˜ ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•˜๋ ค๊ณ  ํ•  ๋•Œ? ์ˆ˜๋งŽ์€ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์žฌ๊ณ ๋Ÿ‰์„ ์กฐํšŒํ•˜๋ฉฐ ์žฌ๊ณ ๊ฐ€ ๋–จ์–ด์กŒ์œผ๋ฉด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด? ์ด๊ฑฐ ๋‚œ๊ฐํ•˜๋‹ค. ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ณ ์ฐฐ์„ ์ž‘์„ฑํ•˜๊ฒ ๋‹ค. DB ๋™์‹œ์„ฑ ๋ฌธ์ œ ๋™์‹œ์— DB๋ฅผ ์กฐํšŒํ•  ๋•Œ๊ฐ€ ๋ฌธ์ œ์ด๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” DBMS๋Š” Mysql Mysql์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ Level 2 Repeatable Read๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ์–ธ๋‘ ์˜์—ญ์„ ํ†ตํ•œ ๋‹ค์–‘ํ•œ ๋ฒ„์ „ ๋ณ„ MVCC๋ฅผ ํ†ตํ•ด ๋ฒ„์ „์— ๋งž๋Š” ๊ฐ’์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  .. 2022. 6. 2.
2022.05.29 ใ€Œ๊ฒฐ์ œ APIใ€ ์žฅ๋ฐ”๊ตฌ๋‹ˆ crud ์ž‘์—…ํ•œ ๊ฒƒ์„ ์ˆ˜์ • ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ด๋ฒˆ ์ฃผ์— ๋๋‚ด๊ณ  ๋‚˜์„œ, ๋’ค๋Šฆ๊ฒŒ ๊ฒฐ์ œ API๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์นด์นด์˜ค ํŽ˜์ด API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋ณด๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ƒ๊ฐ๋งŒํผ ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ์–ด๋””์„œ ๋ณธ ๊ฑด๋ฐ ๋งŒ๋“ค์–ด์ง„ API๋ฅผ ๊ฐ€์ ธ์™€์„œ ์“ฐ๋Š” ๊ฒƒ๋„ ๋Šฅ๋ ฅ์ด๋ผ๊ณ ..ใ…‹ใ…‹ ๊ทธ๋ž˜๋„ ํ•ด์•ผ์ง€ ์–ด์ฉŒ๊ฒ ๋‚˜. ์นด์นด์˜ค ํŽ˜์ด API ๋ฌธ์„œ๋ฅผ ๋ณด๋‹ˆ ๋˜๊ฒŒ ๋‹ค์–‘ํ•œ API๋ฅผ ์†Œ๊ฐœํ•ด ๋†“์•˜๋‹ค. ๊ฒฐ์ œ ์š”์ฒญ๋„ ๋ณด์•ˆ์ƒ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ํ•ด์•ผ ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋„˜๊ฒจ ์ฃผ๊ณ  ๋ฐ›๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋„ ๊ต‰์žฅํžˆ ๋งŽ๋‹ค. ์‹ค๊ฑฐ๋ž˜๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ API๋ผ ํ™•์‹คํžˆ ๋‹ค๋ฅด๊ธด ํ•˜๋‹ค. ๊ฐœ์ธ์ ์ธ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ํ…Œ์ŠคํŠธ ๊ฒฐ์ œ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๋ฆฌ๋Š” ์ž‘์—…์€ ์ฐธ ๊ณจ์น˜ ์•„ํ”ˆ ์ผ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ ๊ฒฐ์ œ ์š”์ฒญ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ค๊ณ„ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํฌ๊ฒŒ ๋ณด๋ฉด ๋‘ ๊ฐ€์ง€ ์ข….. 2022. 5. 29.
์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ์ตœ์ ํ™” ์š”์ƒˆ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ, DB, ์ž์†Œ์„œ ์ˆ˜์ •, ํ† ๋น„ ์Šคํ”„๋ง, ์ฝ”ํ…Œ ์ค€๋น„ ๋“ฑ๋“ฑ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜๋ฃจ๊ฐ€ ๋„ˆ๋ฌด ์งง๊ธฐ๋„ ํ•˜๊ณ  ์ž ์„ ์ ๊ฒŒ ์ž๋„ ๊ดœ์ฐฎ์€ ์ฒด์งˆ์ด ๋˜๊ณ  ์‹ถ์€ ์š”์ฆ˜์ด๋‹ค. DB๊ณต๋ถ€๋Š” Real Mysql์„ ์ฝ๊ณ  ์žˆ๋‹ค. ์ฝ๊ธฐ ๋„ˆ๋ฌด ์–ด๋ ค์šด ์ฑ…์ธ๋ฐ.. DB ์งˆ๋ฌธ๋„ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋ฉด์ ‘์—์„œ ๋””ํ…Œ์ผํ•œ ์งˆ๋ฌธ๊นŒ์ง€ ํ•„์ˆ˜๋ผ๊ณ  ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ด์‹ฌํžˆ ์ •๋ฆฌํ•˜๋ฉด์„œ ์ฝ๊ณ  ์žˆ๋‹ค. ์ฟผ๋ฆฌ ์ž‘์„ฑ ๋ฐ ์ตœ์ ํ™” ๋ถ€๋ถ„์„ ๊ณต๋ถ€์ค‘์ธ๋ฐ ์ด ๋ถ€๋ถ„์—์„œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…์„ ์ •๋ฆฌํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. Join ๊ธฐ๋ฒ• Nested Loop Join ์ค‘์ฒฉ๋œ ๋ฐ˜๋ณต๋ฌธ๊ณผ ์œ ์‚ฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์กฐ์ธ์„ ์ˆ˜ํ–‰ ๋ฐ˜๋ณต๋ฌธ ์™ธ๋ถ€์˜ ํ…Œ์ด๋ธ”์„ ์„ ํ–‰ ํ…Œ์ด๋ธ” & ์™ธ๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ ์นญํ•จ ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์˜ ํ…Œ์ด๋ธ”์€ ํ›„ํ–‰ ํ…Œ์ด๋ธ” & ๋‚ด๋ถ€ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ์นญํ•œ๋‹ค. ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์„ ํ–‰ ํ…Œ์ด๋ธ” ํ–‰์„ ์ถ”์ถœ ํ›„ ํ›„ํ–‰ ํ…Œ์ด๋ธ”์„ ์ฝ์œผ๋ฉฐ .. 2022. 5. 17.
Flyway & DB Migration ์„ ์ ์šฉ์‹œ์ผœ ๋ณด์ž ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋‚˜๋Š” DB ํ…Œ์ด๋ธ”์„ ํ•œ ๋ฒˆ์— ๋‹ค ์ƒ์„ฑํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ•„์š”ํ•œ ๊ฒƒ์„ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  Front๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— DB data๋ฅผ ์ง์ ‘ mysql์„ ์—ด์–ด ๋„ฃ์–ด์ฃผ๊ณ  ์ˆ˜์ •ํ•˜๋Š” ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฐธ ๋น„ํšจ์œจ์ ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ๋„์ค‘ Flyway๋ผ๋Š” Tool์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ๋งˆ์ฃผํ•˜๋ฉด ํ•ญ์ƒ ๋‚ฏ์„  ๊ธฐ๋ถ„์ด์ง€๋งŒ DDL์„ ์ž๋ฐ”์—์„œ ์ง์ ‘ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํˆด์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๋‚˜์ฒ˜๋Ÿผ ์Šคํ‚ค๋งˆ์˜ ์žฆ์€ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚  ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ด๋ณด๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ณด๊ณ  ์‚ฌ์šฉํ•ด ๋ณผ ์ƒ๊ฐ์ด๋‹ค. ํ˜น์‹œ๋‚˜ ํ•ด์„œ Schema ๊ฐ€ ๋ญ์•ผ? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ์กฐ๊ฑด์— ๊ด€ํ•ด ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ ํ•œ ๊ฒƒ! 1. ๊ฐœ๋… ์Šคํ‚ค๋งˆ - ์ „์ฒด์ ์ธ ๋ทฐ 2.. 2022. 5. 3.
2022.04.29 ใ€Œ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ด€๋ จใ€ โ–ถํŒŒํŠธ 1 (10์‹œ ~ 2์‹œ) 1. mysql Ch.10 ์‹คํ–‰ ๊ณ„ํš (2. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ด€๋ จ ๋ฌธ์˜) => ๋˜๋ฉด 3. ํ”„๋กœ์ ํŠธ html ์ •๋ฆฌ โ–ถํŒŒํŠธ 2 (3์‹œ ~ 6์‹œ) 1. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋” ์ถ”๊ฐ€(๋Š๋ ค์ง€๋‹ˆ ๋‚˜์ค‘์— ํ•˜์ž) 2. ์ž์†Œ์„œ ์ˆ˜์ • 3. Controller ์ •์˜ โ–ถํ”„๋กœ์ ํŠธ ๊ด€๋ จ 1. ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์‹œ DB ์š”์ฒญ => mysql ์ด๋ฏ€๋กœ oracle์˜ rownum์„ ์‚ฌ์šฉํ•˜์ง€ ๋ชป ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋น„์Šทํ•˜๊ฒŒ ๋”ฐ๋ผํ•  ์ˆ˜๋Š” ์žˆ๋‹ค. ๊ทธ๋ž˜๋„ mysql์„ ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจ๋ณ„ํ™”๋œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๊ฒƒ. => ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ด์ง€๋งŒ limit ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฆ„) 2022. 4. 29.
2022.1.13์˜ ๊ธฐ๋ก - ํ•˜๋ฃจ ์ •๋ฆฌ - DB ์ •์˜ DRD ๊ด€๊ณ„์„  ๋ฐ ์—‘์…€์ •๋ฆฌJSP ๋ณต์Šต ์ฝ”๋”ฉ- ์˜ค๋Š˜ ๊ณต๋ถ€ ๋‚ด์šฉ - JSP์‘๋‹ต๋ฐฉ์‹์€ json, xml๋กœ๋„ ์‘๋‹ต๊ฐ€๋Šฅํ•œ๋ฐ ์ด๊ฑด restWAS์— ์˜ํ•ด jsp ์›น ๋ฌธ์„œ๊ฐ€ ์„œ๋ธ”๋ฆฟ ํด๋ž˜์Šค๋กœ ์ปดํŒŒ์ผ ๋  ๋•Œ 9๊ฐœ์˜ ๋‚ด์žฅ ๊ฐ์ฒด๊ฐ€ ์ž๋™์œผ๋กœ ์„ ์–ธ๋œ๋‹ค. ์ ค ๋งŽ์ด ์“ฐ๋Š”๊ฒŒ request, response, session ๊ฐ์ฒดjoin_form.jsp๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ์ฒ˜๋ฆฌresponse.sendRedirect(String url) : ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ 301 ์ƒํƒœ์ฝ”๋“œ์™€ URL ์ฃผ์†Œ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ๋ธŒ๋ผ์šฐ์ €์˜ ์š”์ฒญ URL ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์žฌ์š”์ฒญํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ๋ฉ”์†Œ๋“œ - ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ด๋™ (๊ฒฝ๋กœ๋Š” ์ตœ์ƒ์œ„ ๋ฃจํŠธ \ ๋กœ ์žก์Œ , ์›๋ž˜๋Š” contextroot๊ฐ€ ๊ธฐ๋ณธ์ด์ง€๋งŒ(์ž๋ฐ”์ผ๊ฒฝ์šฐ) )⇒ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์ด๋™์€.. 2022. 1. 13.
2022.1.12์˜ ๊ธฐ๋ก(์„ธ๋ฏธํ”„๋กœ์ ํŠธ ํšŒ์˜) [์˜ค๋Š˜ ํ• ์ผ]JSP ๋ธ”๋กœ๊ทธ ์ฝ”๋”ฉ์„ธ๋ฏธํ”„๋กœ์ ํŠธ DB ์•„์›ƒ๋ผ์ธ ์ „์ฒด ์žก๊ธฐ[์„ธ๋ฏธ ํŒ€ํ”Œ]> ์„ธ๋ฏธ ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ DB ์•„์›ƒ๋ผ์ธ์„ ํŒ€์žฅ์ธ ๋‚ด๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ์งœ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •.> ๊ตฌ์ฒด์ ์œผ๋กœ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉฐ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๋‹ค๋ณด๋‹ˆ ๋งŒ๋งŒ์น˜ ์•Š์€ ์ž‘์—…์ž„์„ ์‹ค๊ฐ.> ๊ธด๊ธ‰ ํŒ€ ์†Œ์ง‘ ํšŒ์˜> ํŒ€ ํšŒ์˜ ๋งˆ๋ฌด๋ฆฌ ํ›„ ๋ฌด์—‡์„ ์‹๋ณ„, ๋น„์‹๋ณ„ , N:N ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ํ• ์ง€ ๋…ผ์˜ ํ•จ.> ๋ถ€๋ชจ, ์ž์‹ ํ…Œ์ด๋ธ”๊ฐ„์˜ ๊ด€๊ณ„์™€ erd ๋ชจ๋ธ์—์„œ์˜ ๊ด€๊ณ„์„  ์ข…๋ฅ˜์™€ ์˜๋ฏธ์— ๋Œ€ํ•ด ๊ณต๋ถ€ ํ•จ. ๊ด€๊ณ„์„ ์˜ ์ข…๋ฅ˜์‹ค์„ (Identifying): ์‹๋ณ„๊ด€๊ณ„ => ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ PK๊ฐ€ ์ž์‹ํ…Œ์ด๋ธ”์˜ FK/PK๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ=> ๋ถ€๋ชจ๊ฐ€ ์žˆ์–ด์•ผ ์ž์‹์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ์ ์„ (Non-Identifying): ๋น„์‹๋ณ„๊ด€๊ณ„=> ๋ถ€๋ชจํ…Œ์ด๋ธ”์˜ PK๊ฐ€ ์ž์‹ํ…Œ์ด๋ธ”์˜ ์ผ๋ฐ˜์†์„ฑ์ด ๋˜๋Š” ๊ฒฝ์šฐ=> ๋ถ€๋ชจ๊ฐ€ ์—†์–ด๋„ ์ž์‹์ด ์ƒ๊ธฐ๋Š”.. 2022. 1. 13.
๋ฐ˜์‘ํ˜•