Skip to content

Latest commit

ย 

History

History
101 lines (72 loc) ยท 3.91 KB

jdbc.md

File metadata and controls

101 lines (72 loc) ยท 3.91 KB

1. JDBC ์ดํ•ด

JDBC๊ฐ€ ๋“ฑ์žฅํ•œ ์ด์œ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณด๊ด€ํ•œ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•˜๋ฉด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • 1. ์ปค๋„ฅ์…˜ ์—ฐ๊ฒฐ: ์ฃผ๋กœ TCP/IP๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • 2. SQL ์ „๋‹ฌ: ์—ฐ๊ฒฐ๋œ ์ปค๋„ฅ์…˜์„ ํ†ตํ•ด SQL์„ DB์— ์ „๋‹ฌํ•œ๋‹ค.
  • 3. DB๋Š” ์ „๋‹ฌ๋ฐ›์€ SQL์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์„œ๋ฒ„์— ์‘๋‹ตํ•œ๋‹ค.

๋ฌธ์ œ๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•, SQL์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ฒฐ๊ณผ๋ฅผ ์‘๋‹ต๋ฐ›๋Š” ๋ฐฉ๋ฒ•์ด ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—,

๊ฐœ๋ฐœ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์— ๊ฐœ๋ฐœ๋œ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์ฝ”๋“œ๋ฅผ ํ•จ๊ป˜ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๊ณ , ๊ทธ ๋ฐฉ๋ฒ•๋“ค์„ ๊ณ„์†ํ•ด์„œ ํ•™์Šตํ•ด์•ผํ•œ๋‹ค.


JDBC ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด JDBC (Java DataBase Connectivity)๋ผ๋Š” ์ž๋ฐ” ํ‘œ์ค€์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋œ๋‹ค.
JDBC๋Š” ๋‹ค์Œ 3๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•ด์„œ ์ œ๊ณตํ•œ๋‹ค.

  • java.sql.Connection - ์—ฐ๊ฒฐ
  • java.sql.Statement - SQL์„ ๋‹ด์€ ๋‚ด์šฉ
  • java.sql.ResultSet - SQL ์š”์ฒญ ์‘๋‹ต
public Member findById(String memberId) throws SQLException {
    String sql = "select * from member where member_id = ?";

    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null; // executeQuery()์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

    try {
        con = getConnection();
        pstmt = con.prepareStatement(sql);
        pstmt.setString(1, memberId);

        rs = pstmt.executeQuery(); // ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ๋Š” executeQuery()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

        if (rs.next()) {
            Member member = new Member();
            member.setMemberId(rs.getString("member_id"));
            member.setMoney(rs.getInt("money"));
            return member;
        } else {
            throw new NoSuchElementException("member not found memberId=" + memberId);
        }

    } catch (SQLException e) {
        log.error("db error", e);
        throw e;
    } finally {
        close(con, pstmt, rs);
    }
}

JDBC์˜ ๋“ฑ์žฅ์œผ๋กœ ๋‹ค์Œ 2๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์€ ์ด์ œ JDBC ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์—๋งŒ ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์—,
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ์œผ๋ฉด JDBC ๊ตฌํ˜„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋ณ€๊ฒฝํ•ด๋„ ์‚ฌ์šฉ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐœ๋ฐœ์ž๋Š” JDBC ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์šฉ๋ฒ•๋งŒ ํ•™์Šตํ•˜๋ฉด ๋œ๋‹ค.
  • ํ•œ๋ฒˆ ๋ฐฐ์›Œ๋‘๋ฉด ์ˆ˜์‹ญ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

JDBC์™€ ์ตœ์‹  ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๊ธฐ์ˆ 

JDBC๋Š” 1997๋…„์— ์ถœ์‹œ๋  ์ •๋„๋กœ ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ณต์žกํ•˜๋‹ค.
๊ทธ๋ž˜์„œ ์ตœ๊ทผ์—๋Š” JDBC๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณด๋‹ค๋Š”, JDBC๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์ด ์กด์žฌํ•œ๋‹ค.

SQL Mapper

  • ์žฅ์ 
    • SQL์‘๋‹ต ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ฒด๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.
    • JDBC์˜ ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์ค€๋‹ค.
  • ๋‹จ์ 
    • ๊ฐœ๋ฐœ์ž๊ฐ€ SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
  • ๋Œ€ํ‘œ ๊ธฐ์ˆ : ์Šคํ”„๋ง JdbcTemplate, MyBatis

ORM ๊ธฐ์ˆ 

  • ORM์€ ๊ฐ์ฒด๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”๊ณผ ๋งคํ•‘ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค.
  • ์ด ๊ธฐ์ˆ  ๋•๋ถ„์— ๊ฐœ๋ฐœ์ž๋Š” ๋ฐ˜๋ณต์ ์ธ SQL์„ ์ง์ ‘ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ORM ๊ธฐ์ˆ ์ด ๊ฐœ๋ฐœ์ž ๋Œ€์‹  SQL์„ ๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์‹คํ–‰ํ•ด์ค€๋‹ค.
  • ์ถ”๊ฐ€๋กœ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ SQL์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋„ ์ค‘๊ฐ„์—์„œ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.
  • ๋Œ€ํ‘œ ๊ธฐ์ˆ : JPA, ํ•˜์ด๋ฒ„๋„ค์ดํŠธ, ์ดํด๋ฆฝ์Šค๋งํฌ

Reference