๐Ÿ“ƒJDBC์™€ H2 database

Ji Yunยท2023๋…„ 1์›” 26์ผ

Web-basic

๋ชฉ๋ก ๋ณด๊ธฐ
6/8

์ €๋ฒˆ ์‹ค์Šต์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ ์—†์ด DAO ํด๋ž˜์Šค ์ƒ์„ฑ์ž๋กœ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๊ฐœ ๋„ฃ์–ด์„œ model๋กœ ํ™œ์šฉํ•˜์˜€๋‹ค
์ด์ œ๋ถ€ํ„ด h2 database์™€ jdbc๋ฅผ ์ด์šฉ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™์„ ํ•  ๊ฒƒ์ธ๋ฐ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž


โœ… h2 database ์‚ฌ์šฉํ•˜๊ธฐ
h2 database ์„ค์น˜ โžก๏ธ h2 console ์•ฑ ์‹คํ–‰ โžก๏ธ create a new database... โžก๏ธ ์›ํ•˜๋Š” ๋‚ด์šฉ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒ์„ฑ
โœ… JDBC ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ํ•˜๊ธฐ
pom.xml์— dependency ์ถ”๊ฐ€ํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋‹ค์šด ๋ฐ›๊ณ  ํ”„๋กœ์ ํŠธ์—์„œ ์ฐธ์กฐ
(๋ฉ”์ด๋ธ์ด๋‹ˆ๊นŒ ๐Ÿ˜Š)


JDBC

  • Java Database Connectivity
  • ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋ชฐ๋ผ๋„ JDBC API๋ฅผ ํ†ตํ•ด DB์—ฐ๋™ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ DBMS๊ฐ„์˜ ํ†ต์‹ ์„ ์ค‘๊ฐ„์—์„œ ๋ฒˆ์—ญ
  • JDBC ๊ด€๋ จ ํŒจํ‚ค์ง€๋ฅผ import ํ•  ๋•Œ๋Š” java.sql์„ ์‚ฌ์šฉ

java.sql Package

์ฃผ์š”ํ•œ ๊ฒƒ ๋ช‡๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž
1. java.sql.Driver : JDBC Driver ์ •๋ณด๋ฅผ ์ œ๊ณต, DBMS์™€์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด ๋ฆฌํ„ด
2. java.sql.Connection : ํŠน์ • DBMS ์—ฐ๊ฒฐ ์ˆ˜ํ–‰, DBMS์— sql์„ ์ „๋‹ฌํ•  Connection ๊ฐ์ฒด ๋ฆฌํ„ด
3. java.sql.Statement : SQL query๋ฌธ์„ DB์— ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ sql์„ MySQL ํ˜•์‹์— ๋งž์ถฐ ๋ณ€ํ™˜ ํ›„ ์„œ๋ฒ„์— ์ „๋‹ฌ, ์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฃฐ ๊ฐ์ฒด ๋ฆฌํ„ด
executeQuery(); executeUpdate();
3.1 java.sql.PreparedStatement : Statement์˜ ํ•˜์œ„ interface๋กœ SQL๋ฌธ์„ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ  ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ž…๋ ฅ, Statement ํด๋ž˜์Šค๋ฅผ ์ƒ์† ๋ฐ›์œผ๋ฏ€๋กœ ๋ฉ”์†Œ๋“œ ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
4. java.sql.ResultSet : DBMS์—์„œ select ์‹คํ–‰ ํ›„ ์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค
next(); : ์„œ๋ฒ„์—์„œ ํ•œ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์˜ด


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

1๋‹จ๊ณ„ JDBC ๋“œ๋ผ์ด๋ฒ„ ๋กœ๋“œ

  • jdbc.drivers์— ๋“ฑ๋ก๋œ ๋‚ด์šฉ ๋˜๋Š” Class.forName ๋ฉ”์†Œ๋“œ๋กœ ํ•ด๋‹น ํด๋ž˜์Šค ์ง์ ‘ ๋กœ๋“œ
  • ๋Œ€๋ถ€๋ถ„ ํ›„์ž ์‚ฌ์šฉ
  • h2 database์˜ ๋“œ๋ผ์ด๋ฒ„ ํด๋ž˜์Šค๋Š” org.h2.databse Class.forName("org.h2.Driver");

2๋‹จ๊ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ

  • jdbc ํด๋ž˜์Šค ๋กœ๋”ฉ๊ณผ url ์ค€๋น„ ์™„๋ฃŒ ํ›„ ์—ฐ๊ฒฐ
  • DriverManager์˜ getConnection ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
    Connection conn= DriverManager.getConnection(JDBC_URL,"id","pw");

3๋‹จ๊ณ„ Statement ์ƒ์„ฑ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ํ›„ ์—ฐ๋™์€ SQL๋ฌธ์„ ํ†ตํ•ด ์ด๋ค„์ง
  • Statement ๊ฐ์ฒด๊ฐ€ ๋ฌธ์ž์—ด โžก๏ธ JDBC์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜
  • ๋‹จ, SQL๋ฌธ๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ ๋ณดํ†ต PreparedStatement๋ฅผ ์‚ฌ์šฉ
PreparedStatement pstmt= conn.prepareStatement("insert into test values(?,?)"); //๊ฐ’ ๋ถ€๋ถ„์„ ๋ฌผ์Œํ‘œ๋กœ ๋Œ€์น˜
//setString(int index,String x) ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ x๋กœ ์ง€์ •
pstmt.setString(1,request.getParameter("name")); 
pstmt.setString(2,request.getParameter("email")); 

4๋‹จ๊ณ„ SQL๋ฌธ ์ „์†ก

  • ์‹ค์ œ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰์€ SQL๋ฌธ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ executeQuery() ํ˜น์€ executeUpdate๋ฅผ ์‚ฌ์šฉ
  • executeQuery() select๋ฌธ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ, ๋ฐ˜ํ™˜ ๊ฐ’์€ ResultSet ํด๋ž˜์Šค
  • executeUpdate() update, delete ๋ฌธ ๋“ฑ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์‚ฌ์šฉ, ๋ฐ˜ํ™˜ ๊ฐ’์€ ์ฒ˜๋ฆฌ๋œ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜

5๋‹จ๊ณ„ ๊ฒฐ๊ณผ ๊ฐ–๊ณ ์˜ค๊ธฐ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด executeQuery๋ฅผ ์ด์šฉ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์˜ค๋Š” ๊ฒฝ์šฐ์—” ResultSet ๊ฐ์ฒด๊ฐ€ ํ•„์š” (๋‹น์—ฐํ•จ ResultSet ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋‹ˆ๊นŒ)
    ResultSet rs=pstmt.executeQuery();

6๋‹จ๊ณ„ ์—ฐ๊ฒฐ ํ•ด์ œ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์—์„œ ๋ฐœ์ƒํ•œ ์—ฌ๋Ÿฌ ๊ฐ์ฒด ์ข…๋ฃŒ
rs.close();
pstmt.close();
conn.close();
profile
Asรญ es la vida, sรญ

0๊ฐœ์˜ ๋Œ“๊ธ€