Loading...
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. 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์ž…๋‹ˆ๋‹ค. ..