JDBC(Java Database Connectivity)
์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋๋ก ํ๋ ์๋ฐ API๋ก, Java๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
java.sql.Connection
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฐ๊ฒฐ์ ๋ํ๋ด๋ ์ธํฐํ์ด์ค, ์ฐ๊ฒฐ ์ ๋ณด ๋ฐ ๊ด๋ฆฌ ๋ด๋น
java.sql.DriverManager
(์ฐ๊ฒฐ ์ป๊ธฐ), Connection
์ธํฐํ์ด์ค ๋ฉ์๋ (์ฐ๊ฒฐ ๊ด๋ฆฌ)
java.sql.Statement
SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ค๋ ์ญํ ์ ํ๋ ์ธํฐํ์ด์ค
Connection.createStatement()
, Statement
์ธํฐํ์ด์ค ๋ฉ์๋ (์ฟผ๋ฆฌ ์คํ ๋ฐ ์ค์ )
java.sql.ResultSet
SQL ์ฟผ๋ฆฌ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ ์ธํฐํ์ด์ค
Statement.executeQuery()
, ResultSet
์ธํฐํ์ด์ค ๋ฉ์๋ (๊ฒฐ๊ณผ ์ฒ๋ฆฌ)
JDBC ๋๋ผ์ด๋ฒ
ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒค๋์์ ์ ๊ณตํ๋ JDBC ๋๋ผ์ด๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ฒค๋๋ณ JDBC ๋๋ผ์ด๋ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (์: Oracle JDBC ๋๋ผ์ด๋ฒ, MySQL JDBC ๋๋ผ์ด๋ฒ ๋ฑ)
์์ ์ธ ๊ฐ์ ์ธํฐํ์ด์ค์ JDBC ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ์ฌ DB์ ์ ๊ทผํ ์ ์๋ค.
JDBC Flow
1. Get Connection
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ฐ๊ฒฐ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ DriverManager
ํด๋์ค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ
java.sql.Connection
์ธํฐํ์ด์ค๋ฅผ ๋ฐํํ๋ DriverManager.getConnection()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Connection
๊ฐ์ฒด ์์ฑ
2. Create Statement
Connection
๊ฐ์ฒด๋ก๋ถํฐ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ ์ํ Statement
๊ฐ์ฒด๋ฅผ ์์ฑ
java.sql.Statement
์ธํฐํ์ด์ค๋ฅผ ๋ฐํํ๋ Connection.createStatement()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Statement
๊ฐ์ฒด ์์ฑ
3. Configure Statement
์์ฑ๋ Statement
๊ฐ์ฒด์ ์คํํ๋ ค๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์ค์ (๋ณดํต PreparedStatement
์ฌ์ฉ)
java.sql.PreparedStatement
์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ PreparedStatement
๊ฐ์ฒด ์์ฑ ๋ฐ ๋งค๊ฐ๋ณ์ ์ค์
4. Execute Statement
๊ตฌ์ฑ๋ SQL ์ฟผ๋ฆฌ๋ฅผ ์คํ
- executeQuery()
: SELECT ๋ฌธ์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ResultSet
๊ฐ์ฒด๋ก ๋ฐํ
- executeUpdate()
: INSERT, UPDATE, DELETE ๋ฑ์ ๋ฐ์ดํฐ ์กฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ์ํฅ์ ๋ฐ์ ํ์ ์๋ฅผ ๋ฐํ
5. Handle Warning
SQL ์ฟผ๋ฆฌ ์คํ ์ค์ ๋ฐ์ํ ๊ฒฝ๊ณ ๋ ์์ธ ์ฒ๋ฆฌ
- try-catch
๋ธ๋ก์ ์ฌ์ฉํ์ฌ ์์ธ ์ฒ๋ฆฌ
6. Return Result
์ฟผ๋ฆฌ๋ฅผ ์คํํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ๋ฐํ
- ResultSet
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ ๋ฐ ์ฒ๋ฆฌ
7. Close Statement
์์
์ด ์๋ฃ๋๋ฉด ์ฌ์ฉํ Statement
๊ฐ์ฒด๋ฅผ Statement.close()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ผ๋ก ๋ซ์ ์์ ํด์
java.sql.Statement
์ธํฐํ์ด์ค์ close()
๋ฉ์๋
8. Close Connection
๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์
์๋ฃ ํ Connection
๊ฐ์ฒด๋ฅผ Connection.close()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ช
์์ ์ผ๋ก ๋ซ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์์์ ํด์ ํ ์ฐ๊ฒฐ์ ์ข
๋ฃ
java.sql.Connection
์ธํฐํ์ด์ค์ close()
๋ฉ์๋
๊ต์ฅํ ๋ง์ ๊ณผ์ ์ ํ์๋ก ํ์ง๋ง JdbcTemplate
๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ๊ณผ์ ์ ๋์ ์ฒ๋ฆฌํด์ฃผ์ด ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
JDBC์ ์ฌ์ฉ
JDBC์ JdbcTemplate
๋ ์ด๋ฏธ ์ฌ๋ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ฃผ๊ณ ํธ๋ฆฌํจ์ ์ ๊ณตํด์ฃผ์์ง๋ง, ์ต๊ทผ์๋ ์ง์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค๋ SQL Mapper
๋ ORM
์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉํ๊ณ ์๋ค.
SQL Mapper
์ฅ์
SQL ์๋ต ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด๋ก ํธ๋ฆฌํ๊ฒ ๋ณํ
JDBC์ ๋ฐ๋ณต ์ฝ๋๋ฅผ ์ ๊ฑฐ
๋จ์
๊ฐ๋ฐ์๊ฐ SQL์ ์ง์ ์์ฑ
๋ํ ๊ธฐ์ : ์คํ๋ง JdbcTemplate, MyBatis
ORM
์ฅ์
๊ฐ์ฒด์ RDB์ ํจ๋ฌ๋ค์ ๋ถ์ผ์น ํด๊ฒฐ
์์ฐ์ฑ
์ ์ง๋ณด์
๋จ์
ํ์ต๋น์ฉ
์๋ชป ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ ์ด์
JPA๋ ์๋ฐ ์ง์์ ORM ํ์ค ์ธํฐํ์ด์ค
๋ํ ๊ธฐ์ : JPA, ํ์ด๋ฒ๋ค์ดํธ, ์ดํด๋ฆฝ์ค๋งํฌ
์ฐธ๊ณ ์๋ฃ
Last updated
Was this helpful?