Hibernate-reactive: JDBC ๋Œ€์‹  Vert.x ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•œ ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ

์— ๋งŒ๋“  2020๋…„ 05์›” 01์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: hibernate/hibernate-reactive

ํ˜„์žฌ RxPersistenceProvider ์—๋Š” ์Šคํ‚ค๋งˆ ์ง€์›์ด ์—†์œผ๋ฏ€๋กœ ์ž๋™ ํ…Œ์ด๋ธ” ์ƒ์„ฑ๊ณผ ๊ฐ™์€ ์ž‘์—…์€ JDBC์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ์ด RX๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ถ”๊ฐ€/๊ตฌ์„ฑํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์–ด์ƒ‰ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋ก ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” JDBC ์—ฐ๊ฒฐ ๋Œ€์‹  RxConnection์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  28 ๋Œ“๊ธ€

์กฐ๊ธˆ ์ด์ƒํ•˜๋‹ค. ๋™์‹œ์— ๋™์ผํ•œ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ž˜์— ์‚ฌ์šฉ์ž๋Š” Rx์™€ ํ•จ๊ป˜ ORM์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ฉฐ ์ผ๋ถ€ ๊ฒฝ์šฐ์—๋งŒ Rx API๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ORM ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฏธ ์นœ์ˆ™ํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ถ€๋™์‚ฐ ์ด๋ฆ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ์œ ์Šค ์ผ€์ด์Šค๊ฐ€ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜.
๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ˜์‘ ๋“œ๋ผ์ด๋ฒ„์— ํŠน์ •
์†์„ฑ.

์–ด์จŒ๋“  ORM๊ณผ ์œ ์‚ฌํ•œ ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ
jdbc ๋ถ€๋ถ„์ด ์ด๋ฆ„์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ํ•œ ๊ฐ€์ง€ ์œ ํ˜•์˜ ์†์„ฑ๋งŒ ์„ค์ •ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

2020๋…„ 5์›” 1์ผ ๊ธˆ์š”์ผ ์˜คํ›„ 5์‹œ 53๋ถ„ Andrew Guibert [email protected]
์ผ๋‹ค:

๊ฐ™์€ ์ด์œ ๋กœ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฌผ๊ฑด์„ ๋งŒ๋“œ๋Š” ๋ฐ ์ง€๋‚˜์น˜๊ฒŒ ์†์„ ๋ป—์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
ํŽธ๋ฆฌํ•˜๋‹ค/์ต์ˆ™ํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€๊ธˆ ์šฐ๋ฆฌ๋Š” RX ๊ตฌ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
ํŽธ๋ฆฌํ•˜๊ณ  ์นœ์ˆ™ํ•˜์ง€๋งŒ ๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ jdbc ํ”„๋กœํ† ์ฝœ URL
JDBC๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/hibernate/hibernate-rx/issues/104#issuecomment-622468348 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/AAEIQ5JHS5PQ7M7APGO2YVLRPL5APANNCNFSM4MXDM4CA
.

์–ด์จŒ๋“  ORM๊ณผ ์œ ์‚ฌํ•œ ์†์„ฑ์„ ๊ฐ€์ ธ์•ผ ํ•˜์ง€๋งŒ ์ด๋ฆ„์—์„œ jdbc ๋ถ€๋ถ„์ด ์ œ๊ฑฐ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ํ‘œ์ค€ JDBC URL ํ˜•์‹์„ ๊ณ ์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทธ๊ฒƒ์€ ํ‘œ์ค€์ด๋‹ค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๊ธ‰์—…์ฒด์— ์˜ํ•ด ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋‘๊ฐ€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค
  • Hibernate RX ์™€ ์ผ๋ฐ˜ Hibernate ๋˜๋Š” ์ผ๋ฐ˜ JDBC๋ฅผ ๋™์‹œ์— ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

@DavidD OP์—์„œ ๋ฌธ์ œ๋ฅผ ์ œ๋Œ€๋กœ ์„ค๋ช…ํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜ ์žˆ์ง€๋งŒ ๊ตฌ์„ฑ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์Šคํ‚ค๋งˆ ์ƒ์„ฑ์— ์–ด๋–ป๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๊นŒ?

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜๋„๋ฅผ ๋‹ค์‹œ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด JDBC ๋“œ๋ผ์ด๋ฒ„ ๋˜๋Š” jdbc ์ „์šฉ ๊ตฌ์„ฑ์„ ํฌํ•จํ•  ํ•„์š” ์—†์ด ํ…Œ์ด๋ธ” ์ž๋™ ์‚ญ์ œ/์ƒ์„ฑ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค(RX๊ฐ€ ๋™์ผํ•œ ์†์„ฑ์„ ๋‹ค์‹œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ , ๊ทธ๋ž˜๋„ ๊ดœ์ฐฎ์•„)

์•„ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์ด ๋ถ€๋™์‚ฐ ์ด๋ฆ„์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฉ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค.

๋„ค, ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‚ด ์ž˜๋ชป์ด์•ผ. ์ฒ˜์Œ์ด๋ผ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ์ฝ์—ˆ๋‹ค.

์•ฑ์ด RX๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ถ”๊ฐ€/๊ตฌ์„ฑํ•˜๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์†Œ ์–ด์ƒ‰ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์žฅ์€ ์ด๋ฏธ ORM์— ์กด์žฌํ•˜๋Š” JDBC ์„ค์ •์— ๋Œ€ํ•œ ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ๋‹ค๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ข‹์€ ์ผ์ด๋ฉฐ ์ง€๊ธˆ์€ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด์ „์—๋Š” JDBC๋ฅผ ํ†ตํ•ด ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๋‹ค๊ณ  ์ฃผ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. (๋ฐ˜์‘ํ˜• ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?)

๊ทธ๋Ÿฌ๋‚˜ @emmanuelbernard ๋ฐ @Sanne ๊ณผ์˜ ์ „ํ™” ๋Œ€ํ™”์—์„œ ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ Quarkus ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž ์žฌ์ ์ธ ๊ณ ์ถฉ์ ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@guibert ๊ฐ€ ์ด์— ๋Œ€ํ•ด ๋‚˜์—๊ฒŒ ๊ฒฝ๊ณ ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‚˜๋Š” ๋” ๋งŽ์€ ๊ด€์‹ฌ์„

๋”ฐ๋ผ์„œ ์–ด์จŒ๋“  ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘์–ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋น„๋ก ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค๋ฅผ ์œ„ํ•ด ์ œ ์‹œ๊ฐ„์— ์™„๋ฃŒ๋  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ๋ง์ž…๋‹ˆ๋‹ค.

์ด์ƒํ•œ ์ƒ๊ฐ - ๋‚ด๊ฐ€ ์ •๋ง ๋ชฐ๋ผ์„œ ์–ด๋ฆฌ์„์€ ์ผ์ด๋ผ๋ฉด ์šฉ์„œํ•ด ์ฃผ์„ธ์š” - ํ•˜์ง€๋งŒ ๋ฐ˜์‘ํ˜• ๋“œ๋ผ์ด๋ฒ„๋ฅผ JDBC ํ˜ธํ™˜ ์–ด๋Œ‘ํ„ฐ๋กœ ๋ž˜ํ•‘ํ•œ ๋‹ค์Œ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ ์ฝ”๋“œ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๊ฒƒ์ด schemagen ๋„๊ตฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์ด ๊ณผ๋„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๋” ๋งŽ์€ ์šฉ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@์‚ฐ๋„ค

์—ฌ๊ธฐ์— GenerationTarget ๋ผ๋Š” ์ถ”์ƒํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ํ•˜๋‚˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ 100% ํ™•์‹ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

์‹คํŒจํ•  ๊ฒฝ์šฐ ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ ๋„๊ตฌ์— SCRIPT ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์š”์ฒญํ•œ ๋‹ค์Œ ๋ช…๋ น์„ ํ•˜๋‚˜์”ฉ DB์— ์ „์†กํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ํ•˜๋‚˜๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •ํ™•ํžˆ 100% ํ™•์‹ ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ๋Œ€์ƒ ๋ชฉ๋ก์ด ์ƒˆ ๋Œ€์ƒ์„ ์ถ”๊ฐ€ํ•  ํ™•์‹คํ•œ ๋ฐฉ๋ฒ• ์—†์ด ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฝ”์–ด์— ๋Œ€ํ•œ ์ž‘์€ ์ˆ˜์ •์€ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์ธ. ์ด๊ฒƒ์ด ์—ฌ์ „ํžˆ ์ตœ์šฐ์„  ์ˆœ์œ„๋Š” ์•„๋‹ˆ์ง€๋งŒ ๊ฐ€๋Šฅํ•œ ํ•œ ๋‹ค์Œ ORM ๋ฆด๋ฆฌ์Šค๋ฅผ ์—ฐ๊ธฐํ•  ๊ฒƒ์ด๋ฏ€๋กœ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์‹œ๊ฐ„์„ ์ฐพ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ๋งˆ์ง€๋ง‰ ์ˆœ๊ฐ„ ํŒจ์น˜๋ฅผ ๋” ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ๋ฆด๋ฆฌ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ๋Š” 20๋ถ„ ์ •๋„ ์†Œ์š”๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— Maven ์ค‘์•™ ๋™๊ธฐํ™”์™€ ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” Reactive ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ ์ „์— ์•ฝ 24์‹œ๊ฐ„ ๋™์•ˆ ๋ฆด๋ฆฌ์Šคํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ•˜๊ธฐ ์œ„ํ•ด ์‹œ๊ฐ„์„ ํ• ์• ํ•  ๊ฒƒ์ด๋‹ค. ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์‹ค์ œ๋กœ ๋น„๊ต์  ๊ฐ„๋‹จํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. Hibernate Reactive๋Š” ๋” ์ด์ƒ JDBC ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ด๋Š” ์ผ๋ถ€ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€๋งŒ ๋„ˆ๋ฌด ๋”์ฐํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ Hibernate๋Š” JDBC ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์šฐ ๋ถˆ์•ˆ์ •ํ•˜๊ณ  ๊ทธ๊ฒƒ์— ์˜์กดํ•˜์ง€ ์•Š์„ ๋•Œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™์•„์š”.

๋˜ํ•œ Hibernate Reactive๊ฐ€ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์Šค๋ƒ…์ƒท์„ ์–ป๊ธฐ ์œ„ํ•ด JDBC ์—ฐ๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋Š” ForeignKeys ์˜ ๋ฒ„๊ทธ๋ฅผ ๋…ธ์ถœํ–ˆ์Šต๋‹ˆ๋‹ค! ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ณ„๋„์˜ ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

Gavin์˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ORM์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž๋™ํ™”๋œ ์Šคํ‚ค๋งˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ปท์—์„œ๋Š” ์ด๊ฒƒ์ด ๋œ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

Gavin์˜ ์ˆ˜์ • ์‚ฌํ•ญ์€ ORM์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์Šคํ‚ค๋งˆ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”.

์ž๋™ํ™”๋œ ์Šคํ‚ค๋งˆ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ›จ์”ฌ ๋” ๋ณต์žกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ค, ํ˜„์žฌ ๊ตฌํ˜„์ด ์ „์ ์œผ๋กœ JDBC ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ธ IIRC๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ปท์—์„œ๋Š” ์ด๊ฒƒ์ด ๋œ ์ค‘์š”ํ•˜๋‹ค๋Š” ๋ฐ ๋™์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„ค, ์ด ๋‹จ๊ณ„์—์„œ ์ž‘์—…ํ•  ์ƒ๊ฐ์€ ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

@Sanne ๊ทธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋œ ORM ์ฝ”์–ด๊ฐ€ ์ถœ์‹œ๋˜๊ธฐ

@gavinking ์šฐ๋ฆฌ๋Š” ์›”์š”์ผ์— ์ถœ์‹œ๋ฅผ ๊ณ„ํšํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์—ฐ๊ธฐํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๋Š” ๋˜ํ•œ Quarkus๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ˆ˜์ • ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•  ๋•Œ๋งˆ๋‹ค ํ•˜๋‚˜๋ฅผ ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚˜์ค‘์— ๋” ๋งŽ์€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๋ฆด๋ฆฌ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@Sanne ๊ผผ์ง๋งˆ์š” , ๊ทธ ๋Œ“๊ธ€์€ ์ œ๊ฐ€ #113์˜ ์‹ฌ๊ฐ์„ฑ์„

@gavinking ์–ด๋Š ์‹œ์ ์—์„œ Hibernate์— ํ•„์š”ํ•œ DB ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” Vertx-sql-client์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Vertx ํด๋ผ์ด์–ธํŠธ๋Š” ์–ธ์  ๊ฐ€ ํ˜„์žฌ๋ณด๋‹ค ๋” ๋‚˜์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ API๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ค๋“œ๋ฅ˜๋ฅผ ์œ„ํ•ด +1!

Postgres์šฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
https://github.com/eclipse-vertx/vertx-sql-client/pull/513. ํ”ผ๋“œ๋ฐฑ์€
ํ™•์‹คํžˆ ์ด ๋ฌธ์ œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋” ๋‚˜์€ ์ผ๋ฐ˜ API๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

2020๋…„ 5์›” 14์ผ ๋ชฉ์š”์ผ ์˜คํ›„ 9์‹œ 58๋ถ„ Andrew Guibert [email protected]
์ผ๋‹ค:

@gavinking https://github.com/gavinking ์–ด๋Š ์‹œ์ ์— ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
DB ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜๋ฅผ ์„ค๋ช…ํ•˜๋Š” Vertx-sql-client ๋ฌธ์ œ
์ตœ๋Œ€ ์ ˆ์ „ ๋ชจ๋“œ์— ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? Vertx ํด๋ผ์ด์–ธํŠธ์—๋Š” ๋” ๋‚˜์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ API๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์–ธ์  ๊ฐ€๋Š” ํ˜„์žฌ๋ณด๋‹ค.

โ€”
์ด ์Šค๋ ˆ๋“œ์— ๊ฐ€์ž…ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/hibernate/hibernate-reactive/issues/104#issuecomment-628654875 ,
๋˜๋Š” ๊ตฌ๋… ์ทจ์†Œ
https://github.com/notifications/unsubscribe-auth/ABJV4JODSAYQT7BG2TWHZI3RRP2JFANCNFSM4MXDM4CA
.

์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ ๋„๊ตฌ์— ํ•„์š”ํ•œ ๊ฒƒ์€ information_schema.tables ์˜ ์ •๋ณด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค์ด๋ฉฐ information_schema.key_column_usage ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์Šคํ‚ค๋งˆ ๊ด€๋ฆฌ ๋„๊ตฌ์— ํ•„์š”ํ•œ ๊ฒƒ์€ information_schema.tables ์˜ ์ •๋ณด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค์ด๋ฉฐ information_schema.key_column_usage ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์˜ต์…˜์€ information_schema ๋ฅผ ์ฟผ๋ฆฌํ•˜์—ฌ ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ง์ ‘ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ญ์‚ฌ์ ์œผ๋กœ ํ”Œ๋žซํผ์˜ ์ฐจ์ด์ ์„ ์ถ”์ƒํ™”ํ•˜๊ธฐ ์œ„ํ•ด JDBC ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ API๋งŒ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฑด ๋๋‚ฌ์–ด!

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ํˆฌ๋ช…ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. JDBC ๋“œ๋ผ์ด๋ฒ„ ๋˜๋Š” ์—ฐ๊ฒฐ ํ’€์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด Hibernate ORM์€ JDBC๋ฅผ ํ†ตํ•ด ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ JDBC ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์—†์œผ๋ฉด ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Vert.x ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๊ต‰์žฅํ•ด!
์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋งค์šฐ ํˆฌ๋ช…ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. JDBC ๋“œ๋ผ์ด๋ฒ„ ๋˜๋Š” ์—ฐ๊ฒฐ ํ’€์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด Hibernate ORM์€ JDBC๋ฅผ ํ†ตํ•ด ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ _iff_ JDBC ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ํ†ตํ•ด Vert.x ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ด์„œ JDBC ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋จผ์ € ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? vertx๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ํ•ญ์ƒ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ด€๋ จ ์—†๋Š” ์ผ๋ถ€ ์—ฐ๊ฒฐ์ด ์„ค์ •๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋™์ž‘์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ˜ผ๋ž€์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ - ๋‹ค๋ฅธ ์—ฐ๊ฒฐ์ด ์‹ค์ œ๋กœ ๋™์ผํ•œ DB๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ด์„œ JDBC ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋จผ์ € ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? vertx๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค๋ฉด ํ•ญ์ƒ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ผ๋ฐ˜ JDBC ๋“œ๋ผ์ด๋ฒ„๋กœ ์„ค์ •ํ•œ ์ผ๋ฐ˜ Hibernate๊ฐ€ ์žˆ๋‹ค๋ฉด ์™œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ๋ฐ˜์‘ํ˜• ์Šคํ‚ค๋งˆ ๋‚ด๋ณด๋‚ด๊ธฐ๋Š” ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋ ค๋ฉด ๋งˆ์ง€๋ง‰์— ์™„์ „ํžˆ ๋ถˆ์พŒํ•œ join() ๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์—ฐ๊ฒฐ์ด ์‹ค์ œ๋กœ ๋™์ผํ•œ DB๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋™์ผํ•œ JDBC URL์ด๊ธฐ ๋•Œ๋ฌธ์—?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰