| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- ์ ํ์์น์ค์ง
- ์ง๋ฎค๋น
- dp400
- ์์ด๋ฌธ๋ฒ
- ssg๋๊ณก์
- ํฌ๋งํ์
- ํดํ ์ด๋ธ์คํผ์ปค์ฐ๊ฒฐ
- ํดํ ์ด๋ธ์ค์น
- ์ํ์ถ์ฒ์ ํ๋ธ
- ์ํ์ถ์ฒ
- ๋ฐ๋ ผ400
- ๊ฐ๋ฐ์ ์คํ
- ์ฝ์คํ์ค๋ทํ
- ์์ด์ ํ๋ธ
- ์์ด๊ณต๋ถ
- ์กฐ์ ํฐ๋ฆฌ์ค
- ssgํธ๋๋ง์ผ๋๊ณก์
- ์์ด์ ํ๋ธ์ถ์ฒ
- English
- ๋ทํ๋ฆญ์ค
- ์ ํ์์น์ค๊ทธ
- Movie
- ์จ์ด๋ธ๊ตฌ๋
- ์์ดํฐ
- Netflix
- ์กด์ผ
- ๊ฐ๋จ๋จน์๊ณณ
- ์๋จ
- ์ํผ๋ฐ
- ์ํ์ถ์ฒ์ ํ๋ฒ
- Today
- Total
๋ฆฌ์
Web Server 1: JDBC ๊ธฐ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ณธ๋ฌธ
Web Server 1: JDBC ๊ธฐ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋
๋ฆฌ์ ๐ซง 2026. 7. 7. 14:32
JDBC(Java Database Connectivity)
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํด SQL์ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ํ์ค API
- ์๋ฐ ์ง์์์ ๋ง๋ ์ธํฐํ์ด์ค ๋ชจ์์ด๋ฉฐ, ์ค์ ๋์์ ๊ฐ DBMS ๋ฒค๋๊ฐ ์ ๊ณตํ๋ ๋๋ผ์ด๋ฒ(๊ตฌํ์ฒด)๊ฐ ๋ด๋น
- ์ฆ ๊ฐ๋ฐ์๋ MySQL์ด๋ Oracle์ด๋ ๋์ผํ JDBC ์ธํฐํ์ด์ค(Connection, Statement, ResultSet ๋ฑ)๋ก ์ฝ๋๋ฅผ ์์ฑํ๊ณ , DB ์ข ๋ฅ๋ง ๋ฐ๋๋ฉด ๋๋ผ์ด๋ฒ๋ง ๊ต์ฒดํ๋ฉด ๋จ → DB ๋ ๋ฆฝ์ ์ธ ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅ

JDBC์ ํต์ฌ ํ๋ฆ
- ๋๋ผ์ด๋ฒ ๋ก๋ฉ
- Connection(์ฐ๊ฒฐ) ํ๋
- Statement(SQL ์คํ ๊ฐ์ฒด) ์์ฑ
- SQL ์คํ
- ๊ฒฐ๊ณผ(ResultSet) ์ฒ๋ฆฌ
- ์์ ๋ฐ๋ฉ(close)

๐ด Statement (์ํ + ๋จ์)
String sql = "SELECT * FROM user WHERE id = '" + input + "'";
- ๋ฌธ์์ด ๊ทธ๋๋ก ์คํ
- ์ฌ์ฉ์ ์ ๋ ฅ์ด SQL ๋ฌธ๋ฒ์ผ๋ก ์์
- โ SQL Injection ์ทจ์ฝ
๐ข PreparedStatement (์์ + ํจ์จ)
String sql = "SELECT * FROM user WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, input);
- ? = ์๋ฆฌํ์์
- ๊ฐ์ “๋ฐ์ดํฐ”๋ก๋ง ์ฒ๋ฆฌ๋จ
- โ SQL Injection ๋ฐฉ์ง
- โ SQL ๋ฏธ๋ฆฌ ์ปดํ์ผ → ๋ฐ๋ณต ์คํ ๋น ๋ฆ
๐ ํต์ฌ ๊ฐ๋ : “์ปค์(cursor)”
์ด๊ธฐ ์ํ:
[ before first ]
↓
[ row1 ]
[ row2 ]
[ row3 ]
๐ ์ฒ์์ ๋ฐ์ดํฐ๊ฐ ์๋๋ผ “์ด์ ์์น”์ ์์
๐ rs.next() ๋์
rs.next() ํธ์ถ → row1๋ก ์ด๋ → true
rs.next() ํธ์ถ → row2๋ก ์ด๋ → true
rs.next() ํธ์ถ → row3๋ก ์ด๋ → true
rs.next() ํธ์ถ → ์์ → false
๐ ์ค์ ์ฝ๋ ํ๋ฆ
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println(rs.getString("name"));
}
โ๏ธ ์๋ฏธ
- next() = “๋ค์ ์ค๋ก ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ ์กด์ฌ ์ฌ๋ถ ์ฒดํฌ”
- true → ๋ฐ์ดํฐ ์์
- false → ๋
๐ฅ ํ ์ค ์ ๋ฆฌ
- JDBC = “Java ↔ DB ํต์ญ์ฌ”
- PreparedStatement = “๋ณด์ + ์ฑ๋ฅ ๋ ๋ค ์ก์ ๋ฐฉ์”
- ResultSet = “์ปค์๋ฅผ ์์ง์ด๋ฉฐ ํ ์ค์ฉ ์ฝ๋ ๊ตฌ์กฐ”



2๏ธโฃ close()๋ฅผ ํ๋ฉด?



Connection ์์ฑ
↓
Statement ์์ฑ
↓
ResultSet ์์ฑ
↓
์ฌ์ฉ ์๋ฃ
↓
close()
๊ทธ๋ฌ๋ฉด
ResultSet ๋ฐ๋ฉ
↓
Statement ๋ฐ๋ฉ
↓
Connection ๋ฐ๋ฉ
↓
๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
๋ง์น
๋์๊ด ์ฑ
๋น๋ฆผ ๐
↓
์ฝ์
↓
๋ฐ๋ฉ
↓
๋ค๋ฅธ ์ฌ๋์ด ์ฌ์ฉ
์ ๋๊ฐ๋ค.
3๏ธโฃ try-with-resources์ ์๋ฆฌ
๊ธฐ์กด ๋ฐฉ์
Connection conn = DriverManager.getConnection(...);
try {
// ์์
} finally {
conn.close();
}
ํญ์
finally์์
์ง์ close()
๋ฅผ ์จ์ผ ํ๋ค.
ํ์ง๋ง Java7๋ถํฐ๋
try (
Connection conn = DriverManager.getConnection(...);
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
) {
// ์์
}
์ด๋ ๊ฒ ์ฐ๋ฉด
try ๋ธ๋ก ์ข
๋ฃ
↓
์๋ close()
๋๋ค.
4๏ธโฃ ์๋์ผ๋ก ๋ซํ๋ ์์
๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด๋ค.
์์ฑ ์์
Connection
โ
โผ
PreparedStatement
โ
โผ
ResultSet
์์ ์ด ๋๋๋ฉด
๋ฐ๋๋ก ๋ซํ๋ค.
close()
ResultSet
โฒ
โ
PreparedStatement
โฒ
โ
Connection
์ฆ
์์ฑ
Connection
↓
Statement
↓
ResultSet
โโโโโโโโโโโโโโ
์๋ close
ResultSet
↑
Statement
↑
Connection
"๋์ค์ ๋ง๋ ๊ฒ๋ถํฐ ๋จผ์ ๋ซ๋๋ค(LIFO, Last In First Out)"๋ผ๊ณ ๊ธฐ์ตํ๋ฉด ๋๋ค.
5๏ธโฃ ์ ๋ฐ๋๋ก ๋ซ์๊น?
์๋ฅผ ๋ค์ด
Connection
โโโ Statement
โโโ ResultSet
์ฒ๋ผ ์๋ก ์ฐ๊ฒฐ๋์ด ์๋ค.
๋ง์ฝ
Connection๋ถํฐ ๋ซ์๋ฒ๋ฆฌ๋ฉด
↓
Statement๊ฐ ์ฌ์ฉํ ๋์์ด ์์ด์ง
↓
ResultSet๋ ์ฌ์ฉํ ์ ์์
๊ทธ๋์
ResultSet ์ฌ์ฉ ์ข
๋ฃ
↓
Statement ์ข
๋ฃ
↓
๋ง์ง๋ง์ผ๋ก Connection ์ข
๋ฃ
์์๊ฐ ๊ฐ์ฅ ์์ ํ๋ค.
โญ ์ํ์์ ์์ฃผ ๋์ค๋ ํต์ฌ
| Connection | DB ์ฐ๊ฒฐ | โ |
| Statement / PreparedStatement | SQL ์คํ | โ |
| ResultSet | ์กฐํ ๊ฒฐ๊ณผ ์ ์ฅ | โ |
try-with-resources๋ฅผ ์ฌ์ฉํ๋ฉด
try (
Connection conn = ...
PreparedStatement pstmt = ...
ResultSet rs = ...
) {
// ์์
}
โ finally์์ close()๋ฅผ ์ง์ ์์ฑํ์ง ์์๋ ๋๋ค.
โ ์๋์ผ๋ก ResultSet → PreparedStatement → Connection ์์ผ๋ก close()๊ฐ ํธ์ถ๋๋ค.
์ด ํ๋ฆ๋ง ์ดํดํ๋ฉด JDBC์ ์์ ๊ด๋ฆฌ ๊ฐ๋ ์ ๊ฑฐ์ ๋ค ์ก์๋ค๊ณ ๋ณผ ์ ์๋ค.

'๊ฐ๋ฐ์ ํธ์์ธ > Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| Web Server 1: Servlet ๊ธฐ์ด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์กฐ (0) | 2026.07.10 |
|---|---|
| Web Server 8: Spring MVC ๊ตฌ์กฐ์ ์์ฒญยท์๋ต ์ฒ๋ฆฌ (0) | 2026.07.09 |
| 7: Spring (0) | 2026.07.07 |
| ์ฟ ํค(Cookie) / ์ธ์ (Session) (3) | 2026.07.03 |
| ์น ์๋ฒ & WAS (0) | 2026.07.03 |
