๐ JDBC ๋๋ผ์ด๋ฒ๋ ๋ฌด์์ธ๊ฐ?
JDBC ๋๋ผ์ด๋ฒ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ ์ ์๋๋ก ๋๋ ์ค๊ฐ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค.
1. JDBC๋ ๋ฌด์์ธ๊ฐ?
JDBC(Java Database Connectivity)๋ Java์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๊ธฐ ์ํ ํ์ค API์ ๋๋ค. Java ์ ํ๋ฆฌ์ผ์ด์ ์ JDBC API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ช ๋ น(SQL)์ ๋ณด๋ด๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
ํ์ง๋ง JDBC API๋ ํ์ค ์ธํฐํ์ด์ค์ด๊ธฐ ๋๋ฌธ์, ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ ํ๋ ค๋ฉด ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ ๊ตฌ์ฒด์ ์ธ ๊ตฌํ(๋๋ผ์ด๋ฒ)์ด ํ์ํฉ๋๋ค. ์ด๋ฅผ JDBC ๋๋ผ์ด๋ฒ๊ฐ ๋ด๋นํฉ๋๋ค.
2. JDBC ๋๋ผ์ด๋ฒ์ ์ญํ
JDBC ๋๋ผ์ด๋ฒ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ตฌํ์ฒด์ ๋๋ค.
JDBC ๋๋ผ์ด๋ฒ๊ฐ ํ๋ ์ผ:
- JDBC API ํธ์ถ ์ฒ๋ฆฌ: Java ์ ํ๋ฆฌ์ผ์ด์
์์ ํธ์ถํ JDBC ๋ฉ์๋(e.g.,
Connection
,Statement
,ResultSet
)๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. - SQL ๋ช ๋ น ์ ๋ฌ: JDBC ๋๋ผ์ด๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ฑํ SQL ๋ช ๋ น์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ดํดํ ์ ์๋ ๋ค์ดํฐ๋ธ ํ๋กํ ์ฝ๋ก ๋ณํํฉ๋๋ค.
- ๊ฒฐ๊ณผ ๋ณํ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐํ๋ ๊ฒฐ๊ณผ๋ฅผ Java์์ ์ฒ๋ฆฌํ ์ ์๋ ํํ๋ก ๋ณํํฉ๋๋ค. ์: SQL ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ →
ResultSet
. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ด๋ฆฌ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ ์ฐ๊ฒฐ์ ์ข ๋ฃํ๋ ์์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
3. ์ JDBC ๋๋ผ์ด๋ฒ๊ฐ ํ์ํ๊ฐ?
3.1. ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ๋ค๋ฅธ ํ๋กํ ์ฝ
๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL, PostgreSQL, Oracle, H2 ๋ฑ)๋ ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ช ๋ น์ ์ฒ๋ฆฌํฉ๋๋ค:
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก ๊ณ ์ ํ ํ๋กํ ์ฝ, ๋ช ๋ น์ด, ๋คํธ์ํฌ ๋ฉ์์ง๊ฐ ์กด์ฌํฉ๋๋ค.
- Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฌํ ๋ชจ๋ ์๊ตฌ์ฌํญ์ ์ง์ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก ๋ณ๋์ ๊ตฌํ์ด ํ์ํฉ๋๋ค.
3.2. JDBC ๋๋ผ์ด๋ฒ์ ์ค๊ฐ ์ญํ
JDBC ๋๋ผ์ด๋ฒ๋ Java ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค:
- Java ์ ํ๋ฆฌ์ผ์ด์ ์ JDBC API๋ฅผ ์ฌ์ฉํด ํ์คํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ช ๋ น์ ๋ณด๋ ๋๋ค.
- JDBC ๋๋ผ์ด๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง๋ ํ์์ผ๋ก ๋ณํํ์ฌ ๋ช ๋ น์ ์ ๋ฌํฉ๋๋ค.
4. JDBC ๋์ ์๋ฆฌ
JDBC ๋๋ผ์ด๋ฒ๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ๊ธฐ ์ํด, Java ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ ํ๋ ๊ณผ์ ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
- ๋๋ผ์ด๋ฒ ๋ก๋: JDBC ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํ์ฌ Java์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ญ๋๋ค. ์:
Class.forName("org.h2.Driver");
. - ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ:
DriverManager
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์์ฑํฉ๋๋ค. - SQL ๋ช
๋ น ์คํ:
Connection
๊ฐ์ฒด์์Statement
๋PreparedStatement
๋ฅผ ์์ฑํ์ฌ SQL ๋ช ๋ น์ ์คํํฉ๋๋ค. - ๊ฒฐ๊ณผ ์ฒ๋ฆฌ:
ResultSet
๊ฐ์ฒด๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ Java ์ฝ๋์์ ์ฒ๋ฆฌํฉ๋๋ค. - ์ฐ๊ฒฐ ์ข
๋ฃ:
Connection.close()
๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ข ๋ฃํฉ๋๋ค.
5. JDBC ๋๋ผ์ด๋ฒ๊ฐ ์ค์ํ ์ด์
JDBC ๋๋ผ์ด๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก ๊ณ ์ ํ ๊ตฌํ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ , JDBC API๋ฅผ ํตํด ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋๋ค.
์:
- MySQL์ ์ฌ์ฉํ๋ค๊ฐ H2 Database๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋: ๋๋ผ์ด๋ฒ๋ง ๋ณ๊ฒฝํ๋ฉด ๋ฉ๋๋ค.
- SQL ๋ช ๋ น๊ณผ JDBC API ํธ์ถ์ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.
6. JDBC ๋๋ผ์ด๋ฒ์ ์ข ๋ฅ
JDBC ๋๋ผ์ด๋ฒ๋ ๊ตฌํ ๋ฐฉ์์ ๋ฐ๋ผ 4๊ฐ์ง ์ ํ์ผ๋ก ๋ถ๋ฅ๋ฉ๋๋ค:
- Type 1: JDBC-ODBC ๋ธ๋ฆฟ์ง ๋๋ผ์ด๋ฒ (๊ตฌํ, ์ ์ฌ์ฉ๋์ง ์์)
- Type 2: ๋ค์ดํฐ๋ธ API ๋๋ผ์ด๋ฒ (ํ๋ซํผ ์์กด์ )
- Type 3: ๋คํธ์ํฌ ํ๋กํ ์ฝ ๋๋ผ์ด๋ฒ (๋ฏธ๋ค์จ์ด ์๋ฒ ์ฌ์ฉ)
- Type 4: ๋ค์ดํฐ๋ธ ํ๋กํ ์ฝ ๋๋ผ์ด๋ฒ (Pure Java, ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋จ)
7. ๊ฒฐ๋ก
JDBC ๋๋ผ์ด๋ฒ๋:
- Java ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ํต์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ๋ก ๋ฌ๋ผ์ง๋ ํ๋กํ ์ฝ ๋ฐ ์๊ตฌ์ฌํญ์ ๊ฐ์ถฅ๋๋ค.
- ๊ฐ๋ฐ์๊ฐ JDBC API์๋ง ์์กดํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ฝ๊ฒ ์ํํ๋๋ก ๋์ต๋๋ค.
์ฆ, JDBC ๋๋ผ์ด๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Java ์ ํ๋ฆฌ์ผ์ด์ ์ ํต์ญ์ฌ ์ญํ ์ ํ๋ฉฐ, ์ด ๋๋ถ์ ๊ฐ๋ฐ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ณ ์ธ๋ถ์ฌํญ์ ๊ฑฑ์ ํ์ง ์์๋ ๋ฉ๋๋ค.
๋๊ธ