Loading...
2022. 1. 9. 14:18

[Python] anyio - ํ•œ ์ธต ๋” ๊ฐ•ํ™”๋œ ๋น„๋™๊ธฐ ํŒจ๋Ÿฌ๋‹ค์ž„

์–ด๋А๋ง ์‹ค๋ฌด์—์„œ Python ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋กœ ๋ณด๋‚ธ์ง€ 1๋…„์ด ์กฐ๊ธˆ ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ณ ๋ฏผ๊ณผ ๊ณ ๋‚œ, ๊ทธ๋ฆฌ๊ณ  ์ด ์ž๋ฆฌ์— ์˜ค๊ธฐ๊นŒ์ง€ ์ˆ˜๋งŽ์€ ๋ฐ˜์„ฑ๊ณผ ๋…ธ๋ ฅ์œผ๋กœ ํŒŒ์ด์ฌ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋กœ์จ์˜ ์ž๋ฆฌ๋ฅผ ์žก์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์ด์•ผ๊ธฐ๋ฅผ ์œ„ํ•ด ๋‹จ๋„์ง์ž…์ ์œผ๋กœ ๋ง์”€๋“œ๋ฆฌ์ž๋ฉด Python์€ Java์˜ Spring๊ณผ ๋‹ฌ๋ฆฌ ๋™๊ธฐ ์ฒ˜๋ฆฌ๋ณด๋‹ค๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋” ๋‚˜์€ ๋น›์˜ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ด์ฌ์˜ ๋น„๋™๊ธฐ ํŒจ๋Ÿฌ๋‹ค์ž„์€ ๊ทธ ์—ญ์‚ฌ๊ฐ€ ๋งค์šฐ ๋ณต์žกํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ˆ˜๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๊ณ  ๊ทธ ๋งˆ์ €๋„ ์“ฐ๊ธฐ ์–ด๋ ค์šด ๋ถ€๋ถ„์— ์†ํ•ฉ๋‹ˆ๋‹ค. Coroutine๊ณผ asyncio Python์˜ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋Š” Thread, Process์™€ ๊ฐ™์ด ๋™๊ธฐ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Process๋ฅผ ์ด์šฉํ•œ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๋Š” Context swi..

2022. 1. 8. 22:55

[Spring Data] Spring Data JDBC๋ฅผ ์ด์šฉํ•œ ๋‹ค์–‘ํ•œ ID ์ „๋žต๊ณผ ์ˆ˜๋™ ID ์ „๋žต ๊ตฌํ˜„์‹œ ์ฃผ์˜์ 

์ตœ๊ทผ Kotlin + Spring Boot + Spring Data JDBC ์กฐํ•ฉ์œผ๋กœ ํ•ด๋‹น ๊ธฐ์ˆ  ์Šคํƒ์„ ์ด์šฉํ•ด DDD ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์— ๋Œ€ํ•ด ๋ณต์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์—…์—์„œ Python์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ Spring์— ๋Œ€ํ•œ ์ง€์‹์ด ๋งŽ์ด ๋–จ์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ผˆ๋Š”๋ฐ์š”. ํ‰์†Œ Spring Data JPA๋ผ๋Š” ORM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ, DDD๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋˜๋ฉด์„œ Command์™€ Query ๋ถ„๋ฆฌ์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์„ ๊นจ๋‹ซ๊ณ  ORM์ด ์•„๋‹Œ ๊ฐ€๊ธ‰์  JDBC์™€ ๊ฐ™์€ DB API๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žฆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ JPA๊ฐ€ ์•„๋‹Œ Spring Data JDBC๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์šฐ๋ฆฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๋™ ์ž‘์—…์„ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ Row์— ํ•ด๋‹นํ•˜๋Š” ๊ณ ์œ ๊ฐ’์ธ ID๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ..

2021. 11. 9. 10:48

[FastAPI] 13. SQLAlchemy์™€ Pydantic์„ ์ด์šฉํ•œ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋งคํ•‘

SQLAlchemy๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ์›ํ•˜์ง€ ์•Š์„ ๋•Œ API์—์„œ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ์ตœ์ ํ™” ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค API์—์„œ๋Š” ํŠน์ • ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํ˜น์€ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋‘ ๋‚˜์˜ค๊ฒŒ ๋˜์–ด ์˜คํžˆ๋ ค API ๋กœ๋”ฉ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ค๊ณ  ์„œ๋ฒ„ ๋ถ€ํ•˜์— ์›์ธ์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. SQLAlchemy ORM์˜ relationship SQLAlchemy ORM์—์„œ๋Š” ๊ด€๊ณ„๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด relationship์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ธ”๋กœ๊ทธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“œ๋ ค๋Š”๋ฐ, ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€์ธ์ง€๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๊ณ„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ํ•˜์œ„ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ํ•˜๋‚˜์˜ ์ปจํ…์ธ ๋Š” ์นดํ…Œ๊ณ ๋ฆฌ ํ•˜๋‚˜๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋ผ๊ณ  ํ–ˆ์„ ..

2021. 10. 30. 22:24

[FastAPI] 12. Pytest / UnitTest๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Pytest์™€ Unit Test๋ฅผ ์ด์šฉํ•˜์—ฌ FastAPI์—์„œ ์ž‘์„ฑํ•œ API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Pytest Python ์–ธ์–ด์—์„œ ์ง€์›ํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” Pytest๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Pytest๋Š” Python์—์„œ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์— ๋Œ€ํ•ด ์‹ฌํ”Œํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋ฉฐ ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๋“ค์„ ํ™œ์šฉํ•˜์—ฌ ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ  ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด์„œ๋„ ํ…Œ์ŠคํŠธ๋ฅผ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ํŠน์ง•์œผ๋กœ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์‹คํ–‰์— ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ž์„ธํ•œ ์ •๋ณด ํ‘œ์‹œ ์ง€์› ํ…Œ์ŠคํŠธ ๋ชจ๋“ˆ ๋ฐ ๊ธฐ๋Šฅ์„ ์ž๋™์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ ์ง€์› Session๊ณผ ๊ฐ™์€ ์ˆ˜๋ช…์ด ๊ธด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™” ํ•ด์ฃผ๊ณ , ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜ ์ œ๊ณต unitte..

2021. 9. 26. 11:47

[FastAPI] 11. Dependency Injector๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜์–ด ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€ํ‘œ์ ์ธ ์•„ํ‚คํ…์ฒ˜์ธ Layered Architecture๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Layered Architecture๋Š” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ˜„๋Œ€ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ, Application, Domain, Infrastructure์˜ 3๊ฐœ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋“ค์„ ์ „๋ถ€ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฐ๊ฐ์˜ ์˜์กด์„ฑ์ด ๋Š˜์–ด๋‚˜๊ฒŒ ๋˜๊ณ , ๊ทธ ๋กœ์ง์ด ์ปค์ง€๋ฉด ์ด ์—ญ์‹œ ๊ด€๋ฆฌ๊ฐ€ ํž˜๋“ค์–ด์ง‘๋‹ˆ๋‹ค. Python์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ DI ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ๊ทธ ์ค‘์—์„œ๋„ Dependency Injector๋ฅผ ์‚ฌ์šฉ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Dependency I..

2021. 8. 29. 18:26

[Github] Github Actions์™€ Firebase Channel์„ ์ด์šฉํ•œ ์Šคํ…Œ์ด์ง€ ํ™˜๊ฒฝ ๊ตฌ์ถ•

ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋‘ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๊ธฐ์— ๊ฐ€๊นŒ์ด ์žˆ๋Š” ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋ฐœ(Dev) ํ™˜๊ฒฝ, ์‹ค์ œ Production ํ™˜๊ฒฝ์— ์˜ฌ๋ฆฌ๊ธฐ ์ „, Production๊ณผ ๋˜‘๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ ์œ„ํ•œ Stage ํ™˜๊ฒฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 2019.08.27 - [DevOps/Git] - Github Actions - React ํ”„๋กœ์ ํŠธ๋ฅผ Firebase์— Deploy ํ•˜๊ธฐ Github Actions - React ํ”„๋กœ์ ํŠธ๋ฅผ Firebase์— Deploy ํ•˜๊ธฐ Actions ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŠธ๋กœ React ํ”„๋กœ์ ํŠธ๋ฅผ Firebase์— Deploy ํ•˜๋Š” ๊ธ€์„ ์จ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ YAML ํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ๊ฐ„๋‹จํ•œ Workflow์™€ Matrix์™€..

2021. 8. 19. 00:32

[Github] Password authentication was removed์— ๋Œ€์ฒ˜ํ•˜๊ธฐ

์ €๋Š” OS X, Ubuntu Linux, Windows 3๊ฐ€์ง€ OS์—์„œ Github์„ ์ด์šฉํ•ด ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ํ‘ธ์‹œํ•˜๋Š” ์ž‘์—…์„ ํ•ด์™”์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ์ด๋ฅผ ์—ฌํƒœ๊นŒ์ง€ ์ƒ๊ฐ์—†์ด ํŽธํ•œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ค OS์—์„œ๋Š” SSH Key๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ์–ด๋–ค OS์—์„œ๋Š” Password ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๊ณ , ์–ด๋–ค OS์—์„œ๋Š” OAuth Key๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์˜ค๋Š˜, ๊ฐœ์ธ์šฉ PC์— ์„ค์น˜๋œ Ubuntu Linux์—์„œ ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ๋งŒ๋“ค๊ณ , Github์— Push๋ฅผ ํ–ˆ๋”๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Password authentication is deprecated ์–ธ์  ๊ฐ€ ๋น„์Šทํ•œ ๋ฉ”์ผ์„ Github์—์„œ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ›์•˜์—ˆ๋Š”๋ฐ, ์กฐ๋งŒ๊ฐ„ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ๋ณด์•ˆ ์žฅ์น˜๋“ค์— ๋Œ€ํ•ด ๋” ์ด์ƒ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‚ด์šฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ทธ..

2021. 6. 19. 22:35

[Spring Data] Spring Data JDBC๋ฅผ ์ด์šฉํ•œ DB ์—ฐ๋™ (์‘์šฉํŽธ)

์ง€๋‚œ ๊ธ€์—์„œ ์šฐ๋ฆฌ๋Š” Spring Data JDBC๋ฅผ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ด๋ฅผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ๋งŒ๋“œ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ดค์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์„œ๋กœ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๊ฒฝ์šฐ์— ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Entity ์ด๋ฒˆ ๊ธ€์—์„œ ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ธ”๋กœ๊ทธ์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํฌ์ŠคํŠธ์™€ ์ฝ”๋ฉ˜ํŠธ์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŠธ์— ๋ธ”๋กœ๊ทธ์˜ ๊ฒŒ์‹œ๊ธ€์ด ๋‹ฌ๋ฆฌ๋ฉด ๊ทธ ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๋กœ ํ•˜๋‚˜์˜ ๊ธ€์„ ์กฐํšŒํ–ˆ์„ ๋•Œ ๋Œ“๊ธ€์„ ๊ฐ™์ด ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์‹œ๋ฅผ ๋‹ด์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. SQL script flyway์— ์•„๋ž˜์˜ SQL script๋ฅผ ์ž…๋ ฅํ•ด์ค๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธ€์—์„œ์™€๋Š” ๋‹ฌ๋ฆฌ PRIMARY KEY์˜ ์ƒ์„ฑ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ๋‹ค๋ฅธ๋ฐ, CONSTRAINT ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž์‹ ์ด ์ง์ ‘ ํ•ด๋‹น ํ‚ค..

2021. 6. 5. 22:36

[Spring Data] Spring Data JDBC๋ฅผ ์ด์šฉํ•œ DB ์—ฐ๋™ (๊ธฐ๋ณธํŽธ)

Spring Data JDBC๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” Spring JDBC์™€๋Š” ์กฐ๊ธˆ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. JDBC ํ…œํ”Œ๋ฆฟ์€ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๊ณ  ์šฐ๋ฆฌ๊ฐ€ ์ด๋“ค์˜ ํ•จ์ˆ˜ ํ˜•ํƒœ๋ฅผ ์ง์ ‘ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†์ด ๋งŽ์ด ๊ฐ‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋“ค์„ Spring Data Commons๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์žฌ๊ตฌ์„ฑํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ Spring Data JDBC ์ž…๋‹ˆ๋‹ค. Background of Spring Data JDBC ์šฐ๋ฆฌ๋Š” ์ด์ „ ๊ธ€์—์„œ Spring Data Commons๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” CRUD์˜ ์ถ”์ƒํ™” ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“  ๊ฒƒ์ด ๋ฐ”๋กœ Spring Data Commons ์ธ๋ฐ์š”. ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ JPA๋ฅผ ๋„ฃ์€ ๊ฒƒ์ด ๋ฐ”๋กœ Spring Data JPA์ž…๋‹ˆ๋‹ค. ..

2021. 5. 29. 20:13

[Spring Data] Spring Data module

์Šคํ”„๋ง์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ์ด๋Ÿฐ ์˜๋ฌธ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. JPA๋Š” JPA์ธ๋ฐ, Spring Data JPA๋Š” ๋ฌด์—‡์ด๋ฉฐ, JDBC๋Š” JDBC์ธ๋ฐ, Spring Data JDBC๋Š” ๋ฌด์—‡์ธ๊ฐ€? JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ Spring Data JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํžˆ ๋‹ค๋ฅธ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด Spring Data JPA๋ฅผ ๋ชฐ๋ผ๋„ JPA๋ฅผ ๋ฐฐ์šฐ๋Š” ๋ฐ ํฐ ์ง€์žฅ์€ ์—†์ง€๋งŒ JPA๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ Spring Data JPA๋กœ ๋„˜์–ด์˜ค๋Š” ๊ฒƒ์€ ๋งˆ์น˜ ์ด๋ก  ์—†์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ Spring Data๊ฐ€ ์•ž์— ๋ถ€ํŠผ ๋””ํŽœ๋˜์‹œ๋“ค์€ ๋ฌด์–ธ๊ฐ€ Spring์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ๋Š” ๋А๋‚Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Spring์—์„œ ์ œ๊ณตํ•˜๋Š” Spring Data Pattern์€ ์–ด๋–ค ๊ฒƒ์ผ๊นŒ์š”? Spring Data Spri..