๋ฌธ์ ์
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ค๋ฅธ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณ๊ฒฝํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๊ฐ๋ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ ์ฝ๋๋ ํจ๊ป ๋ณ๊ฒฝํด์ผ ํ๋ค.
๊ฐ๋ฐ์๊ฐ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ์ปค๋ฅ์ ์ฐ๊ฒฐ, SQL ์ ๋ฌ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์๋ต ๋ฐ๋ ๋ฐฉ๋ฒ์ ์๋ก ํ์ตํด์ผ ํ๋ค.
์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด JDBC๋ผ๋ ์๋ฐ ํ์ค์ด ๋ฑ์ฅํ๋ค.
JDBC ์ดํด
JDBC(Java Database Connectivity)๋ ์๋ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ ์ ์๋๋ก ํ๋ ์๋ฐ API๋ค.
JDBC๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ฃ๋ฅผ ์ฟผ๋ฆฌํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
JDBC๋ฅผ ์ง์ ์ฌ์ฉํ์ง๋ ์๋๋ผ๋, JDBC๊ฐ ์ด๋ป๊ฒ ๋์ํ๋์ง ๊ธฐ๋ณธ ์๋ฆฌ๋ฅผ ์์๋์ด์ผ ํ๋ค.
๊ทธ๋์ผ ํด๋น ๊ธฐ์ ๋ค์ ๋ ๊น์ด์๊ฒ ์ดํดํ ์ ์๊ณ , ๋ฌด์๋ณด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ์ฐพ์์ ํด๊ฒฐํ ์ ์๋ค
JDBC๋ ์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ๊ผญ ์์๋์ด์ผ ํ๋ ํ์ ๊ธฐ๋ณธ ๊ธฐ์ ์ด๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐํ๊ธฐ
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด JDBC๊ฐ ์ ๊ณตํ๋ DriverManager.getConnection(..) ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ์ฐพ์์ ํด๋น ๋๋ผ์ด๋ฒ๊ฐ ์ ๊ณตํ๋ ์ปค๋ฅ์ ์ ๋ฐํํด์ค๋ค

DBC๊ฐ ์ ๊ณตํ๋ DriverManager ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฑ๋ก๋ DB ๋๋ผ์ด๋ฒ๋ค์ ๊ด๋ฆฌํ๊ณ , ์ปค๋ฅ์ ์ ํ๋ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
1. ์ ํ๋ฆฌ์ผ์ด์
๋ก์ง์์ ์ปค๋ฅ์
์ด ํ์ํ๋ฉด DriverManager.getConnection() ์ ํธ์ถํ๋ค.
2. DriverManager ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฑ๋ก๋ ๋๋ผ์ด๋ฒ ๋ชฉ๋ก์ ์๋์ผ๋ก ์ธ์ํ๋ค.
3. ์ด๋ ๊ฒ ์ฐพ์ ์ปค๋ฅ์ ๊ตฌํ์ฒด๊ฐ ํด๋ผ์ด์ธํธ์ ๋ฐํ๋๋ค.
JDBC ๊ฐ๋ฐ - ๋ฑ๋ก
private Connection getConnection() {
return DBConnectionUtil.getConnection();
}
con = getConnection();
์ปค๋ฅ์ ํ๋
getConnection() : ์ด์ ์ ๋ง๋ค์ด๋ DBConnectionUtil ๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ์ ํ๋ํ๋ค.
PreparedStatement pstmt = null;
pstmt = con.prepareStatement(sql);
pstmt.setString(1, member.getMemberId());
pstmt.setInt(2, member.getMoney());
pstmt.executeUpdate();
con.prepareStatement(sql) : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฌํ SQL๊ณผ ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ ๋ฐ์ดํฐ๋ค์ ์ค๋นํ๋ค.
pstmt.setString(1, member.getMemberId()) : SQL์ ์ฒซ๋ฒ์งธ ? ์ ๊ฐ์ ์ง์ ํ๋ค. ๋ฌธ์์ด๋ฏ๋ก setString ์ ์ฌ์ฉํ๋ค.
pstmt.setInt(2, member.getMoney()) : SQL์ ๋๋ฒ์งธ ? ์ ๊ฐ์ ์ง์ ํ๋ค. Int ํ ์ซ์์ด๋ฏ๋ก setInt ๋ฅผ ์ง์ ํ๋ค.
pstmt.executeUpdate() : Statement ๋ฅผ ํตํด ์ค๋น๋ SQL์ ์ปค๋ฅ์ ์ ํตํด ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ฌํ๋ค.
๋ฆฌ์์ค ์ ๋ฆฌ
์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๋๋ฉด ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํด์ผ ํ๋ค.
์ฌ๊ธฐ์๋ Connection , PreparedStatement ๋ฅผ ์ฌ์ฉํ๋ค. ๋ฆฌ์์ค๋ฅผ ์ ๋ฆฌํ ๋๋ ํญ์ ์ญ์์ผ๋ก ํด์ผํ๋ค.
Connection ์ ๋จผ์ ํ๋ํ๊ณ Connection ์ ํตํด PreparedStatement ๋ฅผ ๋ง๋ค์๊ธฐ ๋๋ฌธ์
๋ฆฌ์์ค๋ฅผ ๋ฐํํ ๋๋ PreparedStatement ๋ฅผ ๋จผ์ ์ข ๋ฃํ๊ณ , ๊ทธ ๋ค์์ Connection ์ ์ข ๋ฃํ๋ฉด ๋๋ค.
JDBC ๊ฐ๋ฐ - ์กฐํ
rs = pstmt.executeQuery();
๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋๋ executeQuery() ๋ฅผ ์ฌ์ฉํ๋ค. executeQuery() ๋ ๊ฒฐ๊ณผ๋ฅผ ResultSet ์ ๋ด์์ ๋ฐํํ๋ค.
ResultSet ์ ๋ค์๊ณผ ๊ฐ์ด ์๊ธด ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค. ๋ณดํต select ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๊ฐ ์์๋๋ก ๋ค์ด๊ฐ๋ค.
์๋ฅผ ๋ค์ด์ select member_id, money ๋ผ๊ณ ์ง์ ํ๋ฉด member_id , money ๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.
if (rs.next()) {
์ฐธ๊ณ ๋ก ์ต์ด์ ์ปค์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ง ์๊ธฐ ๋๋ฌธ์ rs.next() ๋ฅผ ์ต์ด ํ๋ฒ์ ํธ์ถํด์ผ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์๋ค.
JDBC ๊ฐ๋ฐ - ์์ , ์ญ์
์์ ๊ณผ ์ญ์ ๋ ๋ฑ๋ก๊ณผ ๋น์ทํ๋ค.
๋ฑ๋ก, ์์ , ์ญ์ ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ์ฟผ๋ฆฌ๋ executeUpdate() ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
'Spring > Spring DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์คํ๋ง DB 1ํธ] - 6. DB ๋ฝ (0) | 2023.03.19 |
---|---|
[์คํ๋ง DB 1ํธ] - 5. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ตฌ์กฐ์ DB ์ธ์ (0) | 2023.03.15 |
[์คํ๋ง DB 1ํธ] - 4. ํธ๋์ญ์ (0) | 2023.03.15 |
[์คํ๋ง DB 1ํธ] - 3. DataSource ์ดํด (0) | 2023.03.14 |
[์คํ๋ง DB 1ํธ] - 2. ์ปค๋ฅ์ ํ(Connection Pool) (0) | 2023.03.14 |