DATABASE_JDBC
๐ DB ( DataBase )
๐ JDBC
JDBC ๋ ๋ฌด์์ธ๊ฐ?
JDBC - Java Database Connectivity
์๋ฐ ํ๋ก๊ทธ๋จ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค์ด๋ค.
์์ฉํ๋ก๊ทธ๋จ๊ณผ DBMS๊ฐ์ ํต์ ์ ์ค๊ฐ์์ ๋ฒ์ญํด์ฃผ๋ ์ญํ ์ ํ๋ค.
DATABASE JDBC java.sql.Package
-
java.sql.Driver
DB์ ์ฐ๊ฒฐํ๋ Driver class๋ฅผ ๋ง๋ค ๋ ๋ฐ๋์ implements ํด์ผํ๋ interface๋ก JDBC ๋๋ผ์ด๋ฒ์ ์ค์ฌ์ด ๋๋ Interface์ด๋ค. -
java.sql.Connection
ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ์ ๋ณด๋ฅผ ๊ฐ์ง๋ Interface์ด๋ค.
DriverManager๋ก๋ถํฐ Connection ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์จ๋ค. -
java.sql.Statement
SQL query ๋ฌธ์ DB์ ์ ์กํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ Interface์ด๋ค.
Connection์ ํตํด ๊ฐ์ ธ์จ๋ค. -
java.sql.ResultSet
SELECT ๋ฌธ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์กฐํํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ INTERFACE์ด๋ค. -
java.sql.PreparedStatement
Statement์ ํ์ INTERFACE์ด๋ค.
SQL๋ฌธ์ ๋ฏธ๋ฆฌ ์ปดํ์ผํ์ฌ ์คํ ์๋๋ฅผ ๋์ธ๋ค. -
java.sql.CallableStatement
PreparedStatement์ ํ์ INTERFACE์ด๋ค.
DBMS์ Stored procedure์ ํธ์ถํ๋ค.
DATABASE JDBC ๊ฐ๋ฐ๋จ๊ณ
โ JDBC Driver Loading
Class.forName("com.mysql.cj.jdbc.Driver");
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ํธ์ถํ๋ค. ( MYSQL์์ ์ ๊ณตํ๋ Driver ํด๋์ค )
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ์ํด ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ฉํ๋ค.
โก Connection
String jdbcURL = "jdbc:mysql://127.0.0.1:3306/database?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8";
________ -> database ์คํค๋ง๋ช
String jdbcid= "root";
String jdbcpw= "1234";
Connection conn = null;
conn = DriverManager.getConnection(jdbcURL, jdbcid, jdbcpw);
- DB์ ์ฐ๊ฒฐ์ ์ํด ์ปค๋ฅ์ ์ ๋ณด ( url, user, password )๊ฐ ํ์ํ๋ค.
-
DriverManager.getConnection(jdbcURL, jdbcid, jdbcpw) ์ํ ๊ฒฐ๊ณผ๋ก Connection ๊ฐ์ฒด๋ฅผ ๋ฐํํด์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ statement๋ฅผ ์์ฑํ ์ ์๋ค.
- SELECT ์ฟผ๋ฆฌ๋ createStatement(), INSERT ์ฟผ๋ฆฌ๋ prepareStatement()๋ฅผ ํธ์ถํ๋ค.
โข Statement/PreparedStatement
PreparedStatement stmt = null;
stmt = conn.prepareStatement();
- SQL ๊ตฌ๋ฌธ์ ์ ์ํ๊ณ ๋ณ๊ฒฝ ๋ ๊ฐ์ ์นํ๋ฌธ์๋ฅผ ์ด์ฉํด ์ฟผ๋ฆฌ ์ ์ก ์ ์ ๊ฐ์ setting ํ๋ค.
โฃ executeUpdate() or executeQuery()
-> INSERT
String sql = "insert into product (product_id, product_name, product_price, product_desc, register_date) values (?, ?, ?, ?, now())"
Result rst = null;
rst = stmt.executeUpdate(sql);
-> SELECT
String sql = "select * from product"
Result rst = null;
rst = stmt.executeQuery(sql);
-
executeUpdate()๋ INSERT, DELETE, UPDATE์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. ๋ฐํ๊ฐ์ ํ์
์ int์ด๋ค.
ํ ์ด๋ธ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ ๋ฌธ์ฅ์ ์ฌ์ฉ -
executeQuery()๋ SELECT์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค. ๋ฐํ๊ฐ์ ํ์
์ ResultSet์ด๋ค.
ํ ์ด๋ธ ํํ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ์ฌ์ฉ
โค ResultSet ( SELECT์ ๊ฒฝ์ฐ )
while(rst.next()) {
System.out.print(rst.getInt("idx") + " "); // col ์ด๋ฆ์ด intํ idx
System.out.print(rst.getString(2) + " "); // 2๋ฒ์งธ col
System.out.println(rst.getString("pname")); // col ์ด๋ฆ์ด Stringํ pname
}
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ๊ฒฐ๊ณผ์งํฉ์ ๋ํ ํ์ค์ด๋ค.
- next() ๋ฅผ ํตํด DB์ table ์์ row ํ ์ค์ ๋ถ๋ฌ์จ๋ค. ResultSet ์ธํฐํ์ด์ค์๋ ์ง์ ๊ฒฐ๊ณผ์ ํ์ฌ ํ(row)์ ๊ฐ๋ฆฌํค๋ ์ปค์๋ผ๋ ๊ฐ๋ ์ด ์๋ค.
- getString(), getInt()๋ฅผ ํตํด ์ปฌ๋ผ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ์ง์ ์ฐ๊ฑฐ๋ ๋๋ ์ปฌ๋ผ๋ฒํธ๋ฅผ ์ด์ฉํด์ ํ ํ์ ํน์ Column์ ๊ฐ์ ธ ์ฌ ์ ์๋ค.
โฅ close ( Connection, Statement, ResultSet )
close ( conn, stmt, rst );
- Connection, Statement, ResultSet์ ๋ํด close ๋ฅผ ํด์ค๋ค( ๊ผญ close ํด์ค์ผ ํ๋ค, ๋ฐ๋ก ํด๋์ค๋ฅผ ๋ง๋ค์ด close ํ๋ ๊ณผ์ ์ ์ ์ฅํด๋๋ค. )
DATABASE JDBC ๋ง๋ฌด๋ฆฌ
JDBC์ ๋ํด ์์๋ณด์๋ค.
๋นจ๋ฆฌ JAVA์ DB๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฒ์ ํด๋ณด๊ณ ์ถ์๋๋ฐ ํด๋ณด๋๊น ์ ๊ธฐํ๋ค ใ
ใ
๋น๋ก ์ด ๋ฐฉ๋ฒ์ด mybatis๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฐ๋จํ๊ฒ ์ด๋ค์ง๋ ๊ฒ ์ด์ง๋ง JDBC์ ๊ตฌ์กฐ๋ฅผ ํ์
ํ๊ธฐ ์ํด์๋ ๊ผญ ํ์ํ ๊ณผ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๊ฐ์ ธ์์ ์ฐ๊ฒฐํ๊ณ ์คํํ๊ณ ์ข
๋ฃํ๋ ๊ฒ๊น์ง.
๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ select ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ insert, update ๋ฑ๋ฑ ๋ ๋ถ๋ถ์ ๋ฐฉ๋ฒ์ด ์ฝ๊ฐ์ฉ ์ฐ๋ ๋ฉ์๋๋ ๋ค๋ฅด๊ณ set, get๋ ์ํฉ์ ๋ง๊ฒ ์ ์จ์ผํ๋ค.
JAVA์ ์ฐ๊ฒฐํ ๋ ๋ถํฐ ์ด์ DB๊ฐ ๋ณธ๊ฒฉ์ ์ผ๋ก ์์ํ๋ ๊ฒ์ด๋๊น ์ ์ ํ์๊ฐ ์๋ค !!
๐ ์ฐธ์กฐ
https://shs2810.tistory.com/18
https://devlog-wjdrbs96.tistory.com/139