CHAP.09 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ JDBC

1. DB๊ฐœ์š”

DB๋ž€?

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)
    • ์‚ฌ์ „์ ์œผ๋กœ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์ฒด๊ณ„ํ™”ํ•˜์—ฌ ํ†ตํ•ฉ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ณ  ์ •๋ฆฌํ•ด๋‘” ์ •๋ณด์˜ ์ง‘ํ•ฉ
  • DBMS(Database Management System)
    • DB๋Š” DBMS๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ ์‚ฌ์šฉ
    • DBMS๋Š” ํšจ๊ณผ์ ์ธ ๋ฐ์ดํ„ฐ ํŒŒ์ผ ๊ด€๋ฆฌ์™€ ์šด์˜๋ฅด ์œ„ํ•œ ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ์ธ๋ฑ์‹ฑ, ์บ์‹ฑ, ๋„คํŠธ์›Œํฌ ์„œ๋ฒ„, ์‚ฌ์šฉ์ž ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ, ๋ฐฑ์—…/๋ณต์›, ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
    • DBMS์˜ ์ข…๋ฅ˜: Oracle, MySQL, IBM DB2, MS SQL ๋“ฑ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…์ธ DBMS๋Š” ๋‹ค๋ฅธ ์˜๋ฏธ์ง€๋งŒ ๋ณดํ†ต DB๋ผ๊ณ  ํ•˜๋ฉด DBMS๋ฅผ ํฌํ•จํ•œ ๊ฐœ๋…
  • DB์˜ ์ผ๋ฐ˜์ ์ธ ํŠน์ง•
    1. ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ตœ์†Œํ™”
    2. ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ณต์œ 
    3. ์ผ๊ด€์„ฑ, ๋ฌด๊ฒฐ์„ฑ, ๋ณด์•ˆ์„ฑ ์œ ์ง€
    4. ์ตœ์‹  ๋ฐ์ดํ„ฐ ์œ ์ง€
    5. ๋ฐ์ดํ„ฐ์˜ ํ‘œ์ค€ํ™” ๊ฐ€๋Šฅ
    6. ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์ ,๋ฌผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ ์œ ์ง€
    7. ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ์šฉ์ด
    8. ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ณต๊ฐ„ ์ ˆ์•ฝ

ER DB

  • ์žฅ์ 
    • ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ๋†’์€ ์„ฑ๋Šฅ
    • ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋ณด์žฅ
    • ์ •๊ทœํ™”๋ฅผ ํ†ตํ•ด ๊ฐฑ์‹  ๋น„์šฉ ์ตœ์†Œํ™”
    • ๊ตฌ์กฐํ™”๋˜์–ด์žˆ๊ณ  ๋™์ผํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ๋ฆฌ
  • ๋‹จ์ 
    • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ(์นผ๋Ÿผ์˜ ์ˆ˜์ •์ด๋‚˜ ํ™•์žฅ)์ด ์–ด๋ ค์›€
    • ๋น ๋ฅธ ์†๋„๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋‹จ์ˆœํ•œ ์ฒ˜๋ฆฌ์— ๋Œ€์‘ํ•˜๊ธฐ ์–ด๋ ค์›€
    • ๋ฐ์ดํ„ฐ ๊ด€๊ณ„๋Š” ์œ ์šฉํ•˜์ง€๋งŒ ๊ทธ๋กœ์ธํ•œ ์ฒ˜๋ฆฌ ์†๋„ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

NoSQL DB

  • SQL์„ ์‚ฌ์šฉํ•˜๋Š” ์ „ํ†ต์ ์ธ RDBMS๊ฐ€ ์•„๋‹ˆ๋‹ค ๋ผ๋Š” ์˜๋ฏธ
  • SQL๊ณผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ์ฟผ๋ฆฌ ์–ธ์–ด๋‚˜ ๊ตฌ์กฐ๋Š” ์กด์žฌ
  • NoSQL์€ RDBMS์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์ธ ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ˜•ํƒœ๊ฐ€ ๊ณ ์ •๋˜์ง€ ์•Š์€ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์œ ์šฉ
  • MongoDB, Redis, Casandra, Hbase, CouchDB ๋“ฑ์ด ์žˆ์Œ
  • Document, Graph, key-value, Wide-column ์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์žˆ์Œ

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

2. ER DB

3. H2 DB

4. SQL ๊ฐœ์š”

SQL์ด๋ž€?

  • SQL(STructured Query Language)
    • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ ์–ธ์–ด๋กœ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ณด๋‹จ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ
    • SQL ์ž์ฒด๋Š” ํ‘œ์ค€ ์–ธ์–ด์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ๋‹ค ์„ธ๋ถ€์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์ด ์•ˆ๋  ์ˆ˜ ๋„ ์žˆ์Œ
    • SQL์€ ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ž‘์—… ์ด์™ธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰์—๋„ ์‚ฌ์šฉ
  • SQL์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ
    • ์ƒˆ๋กœ์šด ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    • ๋‚ด์žฅ ํ”„๋กœ์‹œ์ €(Stored Procedure) ์ƒ์„ฑ
    • ๋ทฐ ์ƒ์„ฑ
    • ํ…Œ์ด๋ธ”, ํ”„๋กœ์‹œ์ ธ, ๋ทฐ ๋“ฑ์˜ ์ ‘๊ทผ ๊ถŒํ•œ ๋ถ€์—ฌ
    • DB์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์‹คํ–‰
    • DB๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์กฐํšŒ
    • DB์— ๊ธฐ๋ก ์‚ฝ์ž…, ๊ฐฑ์‹ , ์‚ญ์ œ
    • ์ƒˆ๋กœ์šด DB ์ƒ์„ฑ

SQL์˜ ์œ ํ˜•

  • DDL(Data Definition Language)
    • ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ์™€ ๊ฐ™์€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” SQL ๋ฌธ
    • ์Šคํ‚ค๋งˆ, ํ…Œ์ด๋ธ”, ์‹œํ€€์Šค, ์ธ๋ฑ์Šค, ์‚ฌ์šฉ์ž, ๊ถŒํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌ
  • DML(Data Manipulation Language)
    • ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” SQL ๋ฌธ
    • ๋ฐ์ดํ„ฐ ์กฐ์ž‘์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์ธ CRUD(Create, Read, Update, Delete)์™€ ๊ด€๊ณ„๋œ ๋ช…๋ น

5. [์‹ค์Šต 9-1] SQL ์‹ค์Šต : ํ•™์ƒ์ •๋ณด

6. ๋ชฉ๋ก ์ƒ์„ฑ

7. JDBC ๊ธฐ๋ณธ ๊ตฌ์กฐ์™€ API์˜ ์ดํ•ด

JDBC์˜ ๊ฐœ๋…

  • JDBC์˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ
    • DB์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ค์–‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์— ๋งŽ์€ ์–ด๋ ค์›€์ด ์žˆ์Œ
    • JDBC๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฐ” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค์–‘ํ•œ DB์— ์ ‘์† ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ์ธํ„ฐํŽ˜์ด์Šค
    • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ DB์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์ง€ ๋ชปํ•ด๋„ JDBC API๋งŒ ์•Œ๋ฉด ๋ชจ๋“  DB์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ Java์— ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋œ JDBC API(์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ทœ๊ฒฉ๋งŒ ์ •์˜ํ•˜๊ณ  ์žˆ์Œ)๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ค์ œ DB์—ฐ๊ฒฐ์€ ๊ฐ DBํšŒ์‚ฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„(JDBC API ๊ตฌํ˜„ ํด๋ž˜์Šค)๋ฅผ ์ด์šฉํ•ด SQL ๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘
  • JDBC์˜ ๊ตฌ์กฐ
    • JDBC API: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ž๋ฐ”์— ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌํ•จ๋œ JDBC API๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž‘์„ฑ
    • JDBC ๋“œ๋ผ์ด๋ฒ„(JDBC API ๊ตฌํ˜„ ํด๋ž˜์Šค): ์‹ค์ œ DB ์—ฐ๊ฒฐ์€ ๊ฐ DB ํšŒ์‚ฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” JDBC ๋“œ๋ผ์ด๋ฒ„ ์ด์šฉ
    • SQL ๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘

JDBC ํ”„๋กœ๊ทธ๋ž˜๋ฐ

  1. JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ
    • ๋จผ์ € ํ•ด๋‹น DB์˜ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•œ๋‹ค
      • jdbc.drivers๋ผ๋Š” ์‹œ์Šคํ…œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ๋“ฑ๋ก๋œ ๋‚ด์šฉ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•
      • Class.forName() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ง์ ‘ ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ Class.forName() ๋ฉ”์„œ๋“œ ์ด์šฉ

       Class.forName("org.h2.Dirver");
      
  2. DB์—ฐ๊ฒฐ - ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋กœ๋“œ๋˜๋ฉด ํ•ด๋‹น DB์˜ JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ ๊ฒƒ์„ ์˜๋ฏธํ•จ - ์‹ค์ œ DB์™€ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด Connection ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค ํ•„์š” - DriverManager.getConnection() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ - JDBC URL, DB์‚ฌ์šฉ์ž ID/Password ํ•„์š”
    • JDBC URL : DB์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์ •๋ณด ํฌํ•จ
    • ๊ตฌ์กฐ: jdbc:ํ•˜์œ„ ํ”„๋กœํ† ์ฝœ:๋ฐ์ดํ„ฐ ์›๋ณธ ์‹๋ณ„์ž -> jdbc:mysql://localhost:3306/jspbookdb
      • Connection ํด๋ž˜์Šค ์ธ์Šคํ„ด์Šค ๋ ˆํผ๋Ÿฐ์Šค ์–ป๊ธฐ
    • JDBC ํด๋ž˜์Šค ๋กœ๋”ฉ๊ณผ URL์ด ์ค€๋น„๋˜์—ˆ๋‹ค๋ฉด ์‹ค์ œ DB์™€์˜ ์—ฐ๊ฒฐ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ
    • DriverManager์˜ getConnection() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ

      Connection conn = Driver.Manager.getConnection(JDBC_URL,"ID","Passwowrd");
      
  3. Statement ์ƒ์„ฑ
    • DB ์—ฐ๊ฒฐ์„ ํ•œ๋ฒˆ ์™„๋ฃŒํ•˜๋ฉด ์ดํ›„ ์—ฐ๋™๋ถ€ํ„ฐ๋Š” SQL ๋ฌธ์„ ์ด์šฉํ•ด ์ด๋ฃจ์–ด์ง
    • ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ SQL๋ฌธ์„ JDBC์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์ด๋•Œ ์‚ฌ์šฉ๋˜๋Š”๊ฒƒ์ด Statement ๊ฐ์ฒด
    • ๋ณดํ†ต SQL๋ฌธ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ Statement ๋ณด๋‹ค๋Š” Statement๋ฅผ ์ƒ์†๋ฐ›๋Š” PreparedStatement๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ข‹์Œ
      • PreparedStatement
        • SQL ๋ฌธ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด ๋‘๊ณ  ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ์‹
        • ํšจ์œจ์„ฑ์ด๋‚˜ ์œ ์ง€๋ณด์ˆ˜ ์ธก๋ฉด์—์„œ ์œ ๋ฆฌํ•œ ๊ตฌ์กฐ
        • Statement ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— Statementํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
         PreparedStatement pstmt = conn.prepareStatement("insert into test values(?,?)");
         pstmt.setString(1,request.getParameter("username"));
         pstmt.setString(2,request.getParameter("email"));
        
  4. SQL ๋ฌธ ์ „์†ก - ์‹ค์ œ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰์€ SQL๋ฌธ ์ข…๋ฅ˜์— ๋”ฐ๋ผ executeQuery() ํ˜น์€ executeUpdate()์‚ฌ์šฉ
    • executeQuery()
      • SELECT ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ
      • ๋ฐ˜ํ™˜๊ฐ’์€ ResultSet ํด๋ž˜์Šค ํƒ€์ž…์œผ๋กœ, ํ•ด๋‹น SELECT ๋ฌธ์˜ ๊ฒฐ๊ณผ์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต
    • executeUpdate()
      • UPDATE, DELETE์™€ ๊ฐ™์€ ๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ
      • ๋ฐ˜ํ™˜ํ˜•์€ INT๊ฐ’์œผ๋กœ, ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜ ๋ฐ˜ํ™˜
  5. ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ - ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ์™ธ ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ResultSet ๊ฐ์ฒด ํ•„์š” - ResultSet์€ ์กฐํšŒํ•œ ๊ฒฐ๊ณผ์— ๊ฐ’์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋Š” ์ปค์„œ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

     ResultSet rs = pstmt.executeQuery();
    
  6. ์—ฐ๊ฒฐ ํ•ด์ œ - DB ์‚ฌ์šฉ์ด ์ข…๋ฃŒ๋˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ด์•ผ ํ•จ - DB๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜์ง€๋งŒ ๋™์‹œ ์—ฐ๊ฒฐ ์ˆ˜์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ๋„ ํ•˜๊ณ , ๋™์‹œ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ ์ˆ˜๊ฐ€ ์ ์€ ๊ฒฝ์šฐ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ•จ
    • ์‚ฌ์šฉ์ด ๋๋‚œ DB์—ฐ๊ฒฐ์€ ํ•ด์ œํ•ด์ฃผ๋Š”๊ฒƒ์ด ์ข‹์œผ๋ฉฐ ํ•˜๋‚˜์˜ ์—ฐ๊ฒฐ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ Statement, ResultSet ๊ฐ™์€ ๊ฐ์ฒด๋„ ์ข…๋ฃŒํ•ด์ฃผ๋Š”๊ฒƒ์ด ์ข‹์Œ

      rs.close();
      pstmt.close();
      conn.close();
      

8. [์‹ค์Šต 9-2] JDBC ์ข…ํ•ฉ ์‹ค์Šต : ํ•™์ƒ์ •๋ณด ์กฐํšŒ์™€ ๋“ฑ๋ก

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ