Spring/Spring DB

[์Šคํ”„๋ง DB 1ํŽธ] - 1. JDBC ์ดํ•ด

hello_u 2023. 3. 13. 21:38

 

 

 

๋ฌธ์ œ์ 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— ๊ฐœ๋ฐœ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ์ฝ”๋“œ๋„ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

 

๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ, 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() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

์Šคํ”„๋ง DB 1ํŽธ - ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํ•ต์‹ฌ ์›๋ฆฌ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ DB ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ ์„ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ดํ•ดํ•˜๊ณ , ์™„์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ ์˜ ์›๋ฆฌ์™€ ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๊ณ , ๋” ๊นŠ์ด์žˆ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜

www.inflearn.com