JDBC(Java Database Connectivity)๋Š” ๋‹ค์–‘ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(RDBMS)๊ณผ ์—ฐ๊ฒฐํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ๋ฐ ํ†ตํ•ฉ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์šฉ์œผ๋กœ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ API(์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ JDBC๋Š” Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ RDBMS ๊ฐ„์˜ ์ค‘์š”ํ•œ ๋ธŒ๋ฆฌ์ง€ ๋˜๋Š” ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์—์„œ SQL(๊ตฌ์กฐ์  ์ฟผ๋ฆฌ ์–ธ์–ด)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํšจ์œจ์ ์ด๊ณ  ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

1997๋…„์— ๋„์ž…๋œ JDBC๋Š” Java ์ƒํƒœ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์—…๊ณ„ ํ‘œ์ค€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ๋˜์—ˆ์œผ๋ฉฐ, ๋‹จ์ˆœํ•œ ๋ฐ์Šคํฌํ†ฑ ์†Œํ”„ํŠธ์›จ์–ด๋ถ€ํ„ฐ ๋ณต์žกํ•œ ๋Œ€๊ทœ๋ชจ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์‹œ์Šคํ…œ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๊ด‘๋ฒ”์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. JDBC์˜ ์ฃผ์š” ๋ชฉ์ ์€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Oracle, MySQL, SQL Server, PostgreSQL ๋“ฑ๊ณผ ๊ฐ™์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๊ด€๋˜๊ณ  ์œ ์—ฐํ•˜๋ฉฐ ๊ฐ•๋ ฅํ•œ ์ˆ˜๋‹จ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ๋””์ง€ํ„ธ ์„ธ๊ณ„์—์„œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค, ์ €์žฅ, ๊ฒ€์ƒ‰ ๋ฐ ์ฒ˜๋ฆฌ์˜ ์ค‘์š”์„ฑ์„ ๊ณ ๋ คํ•  ๋•Œ ์ด๋Ÿฌํ•œ ํ˜ธํ™˜์„ฑ์€ ์ตœ์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ๋งค์šฐ โ€‹โ€‹์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

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

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

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

  • DriverManager: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„ ๋ชฉ๋ก์„ ๊ด€๋ฆฌํ•˜๊ณ  ํŠน์ • RDBMS์— ๋Œ€ํ•œ ์ ์ ˆํ•œ JDBC ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ๋“ฑ๋ก, ๊ฒ€์ƒ‰ ๋ฐ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  • ์—ฐ๊ฒฐ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ง„์ž…์  ์—ญํ• ์„ ํ•˜๋Š” ํŠน์ • RDBMS์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  • Statement, preparedStatement ๋ฐ CallableStatement: ๋‹จ์ˆœ ํ”„๋กœ์‹œ์ €, ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ํ”„๋กœ์‹œ์ €, ์ €์žฅ ํ”„๋กœ์‹œ์ €๋ฅผ ๋น„๋กฏํ•œ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.
  • ResultSet: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํšจ์œจ์ ์ด๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • SQLException: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—… ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ๋ฐ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ž์„ธํ•œ ์ง„๋‹จ ์ •๋ณด ๋ฐ ๋ณต๊ตฌ ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

AppMaster ๋Š” ๋ฐฑ์—”๋“œ, ์›น ๋ฐ ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๋Š” ๊ฐ•๋ ฅํ•œ no-code ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. AppMaster ์ƒ์„ฑ๋œ Java ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— JDBC๋ฅผ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•˜์—ฌ ๋ชจ๋“  Postgresql ํ˜ธํ™˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ ๊ฐ์—๊ฒŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ†ตํ•ฉ์€ AppMaster ๊ณ ๊ฐ์˜ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์ˆ˜๋ช…์ฃผ๊ธฐ๋ฅผ ํฌ๊ฒŒ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ๊ฐ€์†ํ™”ํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์„ ์‹คํ˜„ํ•˜๋Š” ๋ฐ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ AppMaster ์˜ no-code ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์ž๋™ ์ƒ์„ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ†ตํ•ด ๊ณ ๊ฐ์€ ๊ธฐ์ˆ ์  ๋ถ€์ฑ„์™€ ๋ฆฌ์†Œ์Šค ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ํ˜„๋Œ€์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํšจ์œจ์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด ์†”๋ฃจ์…˜์„ ๊ตฌ์ถ•ํ•˜๊ณ  ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ JDBC๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์–‘ํ•œ RDBMS์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ์›ํ™œํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ†ตํ•ฉ, ์•ก์„ธ์Šค ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ด‰์ง„ํ•˜๋Š” ์ค‘์š”ํ•œ ์—…๊ณ„ ํ‘œ์ค€ API์ž…๋‹ˆ๋‹ค. ์ˆ˜๋…„์— ๊ฑธ์ณ JDBC๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์™€ ๋ณต์žก์„ฑ์„ ์ง€๋‹Œ ์ˆ˜๋งŽ์€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ทธ ๊ฐ€์น˜๋ฅผ ์ž…์ฆํ•ด ์™”์œผ๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ฐ•๋ ฅํ•จ๊ณผ ํŽธ๋ฆฌํ•จ์„ ํ†ตํ•ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ž ์žฌ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JDBC๋ฅผ ์ œํ’ˆ์— ํ†ตํ•ฉํ•จ์œผ๋กœ์จ AppMaster ๊ณ ๊ฐ์ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋ฉฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋Šฅ, ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ ์ธก๋ฉด์—์„œ ํ›จ์”ฌ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.