# JDBC by using DriverManager
Study Repository

JDBC by using DriverManager

by rlaehddnd0422

JDBC๋ž€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ์ž…๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” MySQL, OracleDB ๋“ฑ ์ข…๋ฅ˜๊ฐ€ ๋งค์šฐ ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

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

์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ JDBC๋ผ๋Š” ์ž๋ฐ” ํ‘œ์ค€์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๊ณ  JDBC๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜์กดํ•˜๊ฒŒ ๋˜๋ฉด 

์ปค๋„ฅ์…˜๋ถ€ํ„ฐ SQL์ „๋‹ฌ, ๊ฒฐ๊ณผ ์‘๋‹ต๊นŒ์ง€ ์ž๋ฐ”๋Š” ์ด๋ ‡๊ฒŒ JDBC ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜ํ•ด๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ํ‘œ์ค€ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์„ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ์ž๋Š” ๊ฐœ๋ฐœํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

์ด๋ ‡๊ฒŒ JDBC์˜ ๋“ฑ์žฅ์œผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐ, ์ „๋‹ฌ, ์‘๋‹ต๊นŒ์ง€ ์ƒˆ๋กœ ํ•™์Šตํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ๊ณ , ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ ์‹œ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋‹ค ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

์‚ฌ์‹ค JDBC๋Š” ์ถœ์‹œ๋œ์ง€ ๊ต‰์žฅํžˆ ์˜ค๋ž˜๋œ ๊ธฐ์ˆ ์ด๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ตœ๊ทผ์—๋Š” ์ด JDBC๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  SQL Mapper์ด๋‚˜ ORM ๊ธฐ์ˆ ๊ฐ™์ด JDBC๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๋“ค์„ ์‚ฌ์šฉํ•ด JDBC๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

SQL Mapper์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ SQL Mapper๋กœ SQL์„ ์ „๋‹ฌํ•˜๊ณ  SQL Mapper์—์„œ JDBC๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • Application -> SQL Mapper -> JDBC
  • SQL Mapper์˜ ๋Œ€ํ‘œ ๊ธฐ์ˆ ๋กœ๋Š” Spring JdbcTemplate, MyBatis ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • JDBC๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋„๋ก ๋„์™€์ฃผ๊ณ , JDBC์˜ ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์ค๋‹ˆ๋‹ค.
  • SQL ์‘๋‹ต ๊ฒฐ๊ณผ๋กœ ๊ฐ์ฒด๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

ORM ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ JPA์—๊ฒŒ SQL์ด ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ด JPA์—์„œ JDBC๋กœ SQL์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

  • Application -> JPA -> JDBC
  • JPA ๊ตฌํ˜„์ฒด์—์„œ SQL์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด JDBC๋กœ ๋„˜๊ฒจ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” SQL์„ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋˜๋Š” ํŽธ๋ฆฌํ•จ์„ ์žฅ์ ์œผ๋กœ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
  • ์ถ”๊ฐ€๋กœ ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค ๋‹ค๋ฅธ SQL์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋„ ํ•ด๊ฒฐ ( JPA๊ฐ€ ์ง์ ‘ SQL์„ ๋งŒ๋“ค์–ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ ) 
  • JPA๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๊ตฌํ˜„์ฒด๋กœ๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ์™€ ์ดํด๋ฆฝ์Šค ๋“ฑ์ด ์žˆ๊ณ  ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๋ฅผ ๋งŽ์ด ์“ฐ๋Š” ์ถ”์„ธ์ž…๋‹ˆ๋‹ค.

 

SQL Mapper๋“  ORM์ด๋“  ๊ฒฐ๊ตญ์€ JDBC๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— JDBC๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ธฐ๋ณธ์›๋ฆฌ๋Š” ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ž ์ด์ œ, ์ด JDBC๋ฅผ ์‚ฌ์šฉํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์€ SQL Mapper, ORM ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜์ง€ ์•Š๊ณ  ์›์ดˆ์ ์ธ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ด์„œ ์—ฐ๊ฒฐํ•ด๋ณผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. 

์ฐธ๊ณ ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” H2 ๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.


DB์—ฐ๊ฒฐ

1. ์ปค๋„ฅ์…˜ ํš๋“ - JDBC๊ฐ€ ์ œ๊ณตํ•˜๋Š” DriverManager.getConnection() ์‚ฌ์šฉ

@Slf4j
public class DBConnectionUtil {

    public static Connection getConnection()
    {
        try
        {
            Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            log.info("get connection={}, class={}",connection,connection.getClass());
            return connection;
        } catch (SQLException e) {
            throw new IllegalStateException(e);
        }
    }

}
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์†ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ •๋ณด๋“ค์€ ์‚ฌ์ „์— ์ƒ์ˆ˜๋“ค๋กœ ์ •์˜ํ•ด ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ( URL, USERNAME, PASSWORD )
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ DB๋ฅผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  "์ปค๋„ฅ์…˜"์ด๋ž€ ๋งค๊ฐœ์ฒด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅ์…˜์€ JDBC๊ฐ€ ์ œ๊ณตํ•˜๋Š” DriverManager์˜ getConnection() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด DB์— ๋Œ€ํ•œ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • getConnection()์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ปค๋„ฅ์…˜์„ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
  • H2์˜ ๊ฒฝ์šฐ H2์— ๋Œ€ํ•œ ์ปค๋„ฅ์…˜ , MySQL์ด๋ฉด Mysql์— ๋Œ€ํ•œ ์ปค๋„ฅ์…˜์„ DriverManager๊ฐ€ ์ž๋™์œผ๋กœ ์ฐพ์•„์„œ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.

  • DirverManager.getConnection()์„ ์‚ฌ์šฉํ•ด JDBC๊ฐ€ ์ œ๊ณตํ•˜๋Š” Connection(์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
  • Connection์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ, getConnection()์„ ํ†ตํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ฐพ์•„ ํ•ด๋‹น ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ปค๋„ฅ์…˜ ๊ตฌํ˜„์ฒด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);

์ด์ œ JDBC์˜ ์ปค๋„ฅ์…˜์„ ํš๋“ํ•ด์„œ DB์— ์ ‘๊ทผํ•ด ๋กœ์ง์„ ํ†ตํ•ด DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•œ ํ›„ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…, ๋ฐ์ดํ„ฐ๋ฅผ Id๋ฅผ ํ†ตํ•ด ์กฐํšŒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 


DB ์ ‘๊ทผ

package hello.repository;

import hello.connection.DBConnectionUtil;
import hello.domain.Member;
import lombok.extern.slf4j.Slf4j;

import java.sql.*;
import java.util.NoSuchElementException;

/**
 * JDBC - DriverManager ์‚ฌ์šฉ
 */
@Slf4j
public class MemberRepositoryV0 {

    public void init() throws SQLException {

        String sql = "drop table member if exists cascade;\n" +
                "    create table member (\n" +
                "        member_id varchar(10),\n" +
                "        money integer not null default 0,\n" +
                "        primary key (member_id)\n" +
                ");";

        Connection con = null;
        PreparedStatement pstmt = null;

        try
        {
            con = getConnection();
            pstmt = con.prepareStatement(sql);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            throw e;
        }finally
        {
            close(con,pstmt,null);
        }
    }

    public Member save(Member member)
    {
        String sql = "insert into member(member_id, money) values(?,?)";

        Connection con = null;
        PreparedStatement pstmt = null;

        try
        {
            con = getConnection();
            pstmt = con.prepareStatement(sql);
            pstmt.setString(1,member.getMemberId());
            pstmt.setInt(2, member.getMoney());
            pstmt.executeUpdate();
            return member;
        } catch (SQLException e) {
            log.error("db error",e);
            throw new RuntimeException(e);
        }finally {
            close(con, pstmt, null);
        }
    }

    public Member findById(String memberId) throws SQLException {
    
        String sql = "select * from member where member_id = ?";
        Connection con = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;

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

            rs = pstmt.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);
        }
    }

    private Connection getConnection() {
        return DBConnectionUtil.getConnection();
    }

    private void close(Connection con, Statement stmt, ResultSet rs)
    {
        if(rs!=null)
        {
            try
            {
                rs.close();
            } catch (SQLException e) {
                log.info("error",e);
            }
        }

        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                log.info("error", e);
            }
        }

        if (con != null) {
            try {
                con.close();
            } catch (SQLException e) {
                log.info("error", e);
            }
        }
    }




}

์—ฐ๊ฒฐ๋ถ€ํ„ฐ "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ดˆ๊ธฐํ™”", "๋ฐ์ดํ„ฐ ์กฐํšŒ", "์‚ญ์ œ", "์—…๋ฐ์ดํŠธ", "์—ฐ๊ฒฐ ์ข…๋ฃŒ" ๋“ฑ DB์— ์ ‘๊ทผํ•˜๋Š” ์ƒํ™ฉ์—์„œ DB์™€ ์—ฐ๊ฒฐ์ด ๋‚ด๋ถ€์ ์ธ ๋ฌธ์ œ๋กœ ์—ฐ๊ฒฐ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ SQLException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋”ฐ๋ผ์„œ try catch๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฉ”์†Œ๋“œ์—์„œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฝค ๋ฒˆ๊ฑฐ๋กœ์šด ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ด ์ž‘์—…์€ "JdbcTemplate"์„ ์‚ฌ์šฉํ•ด ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
 

[JdbcTemplate] JDBC Template ์ด๋ž€?

JdbcTemplate ๋ž€? JdbcTemplate์€ JDBC ์ฝ”์–ด ํŒจํ‚ค์ง€์˜ ์ค‘์•™ ํด๋ž˜์Šค๋กœ JDBC์˜ ์‚ฌ์šฉ์„ ๋‹จ์ˆœํ™”ํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. JdbcTemplate์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋Š” JDBC๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ์‚ฌ

rlaehddnd0422.tistory.com

  • ์ด ์ „์— ๋งŒ๋“ค์–ด ๋‘” DBConnectionUtil์„ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ con์„ ํš๋“ํ•˜๊ณ ,
  • con.prepareStatement(sql)์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „๋‹ฌํ•  SQL์„ PrepareStatement ๊ฐ์ฒด์— ์ „๋‹ฌํ•˜๊ณ ,
  • ์ถ”๊ฐ€์ ์œผ๋กœ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋“ค์„ PrepareStatement ๊ฐ์ฒด์— setString์œผ๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์ฟผ๋ฆฌ๋ฅผ execute~()๋ฅผ ์‚ฌ์šฉํ•ด ์‹คํ–‰ํ•˜๊ณ  ๋‚œ ๋’ค ๊ฒฐ๊ณผ๊ฐ’์€ ResultSet rs์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
    • executeQuery() - DB ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ ์‚ฌ์šฉ
    • executeUpdate() - ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ
  • ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋„˜๊ฒจ๋ฐ›์•„ Resultset rs์—์„œ ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ด๋ณด์•˜๋Š”๋ฐ, ๋ฐ์ดํ„ฐ ์‚ญ์ œ, ๋ฐ์ดํ„ฐ ์—…๋ฐ์ดํŠธ ๋“ฑ ๋‹ค๋ฅธ ์ž‘์—…๋“ค๋„ ์œ„์™€ ๊ฐ™์€ ๋งฅ๋ฝ์œผ๋กœ ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋Š” ์ƒ๋žตํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ปค๋„ฅ์…˜์„ ์ง์ ‘ ์–ป์ง€ ์•Š๊ณ , ์ž๋ฐ”๊ฐ€ ์ œ๊ณตํ•˜๋Š” JDBC ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ปค๋„ฅ์…˜์„ JDBC๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์–ป๊ณ , SQL์„ JDBC์— ์ „๋‹ฌํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

Repository ๊ณ„์ธต์—์„œ ๊ฐ ๋ฉ”์†Œ๋“œ๋งˆ๋‹ค try - catch๋ฌธ์„ ์‚ฌ์šฉํ•ด ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ž‘์—… ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋ฉ”์†Œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ• ๋•Œ๋งˆ๋‹ค ์ปค๋„ฅ์…˜์„ ํš๋“ํ•˜๋Š” ๊ท€์ฐฎ์€ ์ž‘์—…๋“ค์ด ๋งŽ์•˜๋Š”๋ฐ์š”. ์ด์ œ ํ•œ ๋‹จ๊ณ„์”ฉ ์ ์ง„์ ์œผ๋กœ ๋ฐœ์ „์‹œ์ผœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ! 


<์ฐธ๊ณ  ์ž๋ฃŒ> 

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard

 

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

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

www.inflearn.com

 

 

 

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Study Repository

rlaehddnd0422

ํ™œ๋™ํ•˜๊ธฐ