[Day 13 | DB] JDBC - 드라이버 접속하고 연결하기

y♡ding·2024년 10월 30일
0

데브코스 TIL

목록 보기
83/163

1. 드라이버 로딩하기

  • JDBC는 Java 프로그램이 데이터베이스와 상호작용할 수 있도록 돕는 API입니다.
    • 데이터베이스
package com.exam;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionEx02 {
    public static void main(String[] args) {
        System.out.println("시작");

        // 드라이버 이름 : org.mariadb.jdbc.Driver
        // 동적으로 클래스 로딩
        try {
            Class.forName("org.mariadb.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("[에러] " + e.getMessage());
        }
        System.out.println("드라이버 로딩 성공");

        // 연결: 데이터베이스 위치(아이피/포트), 사용자 아이디, 비밀번호
        String url = "jdbc:mariadb://localhost:3306/sample"; // localhost: 아이디, 3306: 포트
        String user = "root";
        String password = "123456";

        Connection conn = null;

        try {
            conn = DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            System.out.println("[에러] " + e.getMessage());
        } finally {
            if (conn != null) { try { conn.close(); } catch (SQLException e) {}}
        }
        System.out.println("데이터베이스 연결 성공");

        System.out.println("끝");
    }
}
  • Class.forName("org.mariadb.jdbc.Driver");
    • 이 줄은 MariaDB 드라이버를 동적으로 로드하는 역할을 합니다.
    • JDBC는 데이터베이스에 접근하기 위해 각 DBMS에 맞는 드라이버가 필요합니다. 이때 Class.forName() 메서드를 사용해 드라이버를 메모리에 로드합니다.
  • 만약 드라이버가 로드되지 않으면 ClassNotFoundException 예외가 발생합니다.

2. 데이터베이스 연결하기

드라이버 로딩이 완료되었으니, 이제 실제로 MariaDB 데이터베이스에 연결할 차례입니다.

DriverMAnager 클래스

  • 역할: DriverManager는 자바 애플리케이션과 데이터베이스 드라이버 간의 연결을 관리하는 클래스입니다.
  • 사용 예시 DriverManager.getConnection() 메서드를 사용하여 데이터베이스에 연결할 때 주로 사용됩니다.
  • 주요 기능:
    • 데이터베이스 URL, 사용자 이름, 비밀번호 등을 기반으로 데이터베이스 연결을 설정합니다.
    • 데이터베이스 연결이 필요할 때 올바른 JDBC 드라이버를 찾아 연결을 설정합니다.
  • 주요 메서드: getConneciton() - 데이터베이스 연결을 반환합니다.

데이터베이스 연결하기

  • JDBC에서 데이터베이스에 연결하려면 DriverManager.getConnection() 메서드를 사용합니다.
  • 연결하려는 데이터베이스의 URL, 사용자 아이디, 비밀번호가 필요합니다.
package com.exam;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionEx02 {
    public static void main(String[] args) {
        System.out.println("시작");

        try {
            // MariaDB JDBC 드라이버 로드
            Class.forName("org.mariadb.jdbc.Driver");
            System.out.println("드라이버 로딩 성공");
        } catch (ClassNotFoundException e) {
            System.out.println("[에러] 드라이버 로딩 실패: " + e.getMessage());
        }

        // 데이터베이스 연결 정보
        String url = "jdbc:mariadb://localhost:3306/sample"; // 데이터베이스 URL
        String user = "root"; // 데이터베이스 사용자 이름
        String password = "123456"; // 데이터베이스 비밀번호

        Connection conn = null;

        try {
            // 데이터베이스에 연결
            conn = DriverManager.getConnection(url, user, password);
            System.out.println("데이터베이스 연결 성공");
        } catch (SQLException e) {
            // 연결 실패 시 오류 메시지 출력
            System.out.println("[에러] 데이터베이스 연결 실패: " + e.getMessage());
        } finally {
            // 데이터베이스 연결 종료
            if (conn != null) {
                try {
                    conn.close();
                    System.out.println("데이터베이스 연결 해제");
                } catch (SQLException e) {
                    System.out.println("[에러] 연결 해제 실패: " + e.getMessage());
                }
            }
        }

        System.out.println("끝");
    }
}
  • 드라이버 로드: Class.forName("org.mariadb.jdbc.Driver");
    • 이 코드는 1단계에서 설명한 내용과 동일합니다. 드라이버를 메모리에 로드하여 MariaDB와 통신할 준비를 합니다.
  • 데이터베이스 URL, 사용자 이름, 비밀번호:
    • String url = "jdbc:mariadb://localhost:3306/sample";
      • 이 URL은 MariaDB 데이터베이스의 위치를 나타냅니다. "jdbc:mariadb://localhost:3306/sample"localhost에 있는 sample 데이터베이스에 연결하겠다는 의미입니다.
    • String user = "root";String password = "123456";
      • 데이터베이스의 사용자 이름과 비밀번호를 설정합니다. 실제 환경에 맞게 수정해야 합니다.
  • 데이터베이스 연결: conn = DriverManager.getConnection(url, user, password);
    • DriverManager.getConnection() 메서드를 사용해 데이터베이스에 연결하고, 성공 시 Connection 객체가 반환됩니다.
    • 이 객체는 데이터베이스와의 통신을 유지하는 역할을 하며, 이후 SQL 쿼리를 실행할 때 사용됩니다.
    • 연결에 실패하면 SQLException 예외가 발생하고, 에러 메시지가 출력됩니다.
  • 연결 종료: conn.close();
    • finally 블록에서 conn.close()를 호출하여 데이터베이스 연결을 해제합니다.
    • Connection 객체는 데이터베이스와의 연결을 유지하므로, 사용이 끝나면 반드시 연결을 닫아야 합니다. 이를 통해 리소스가 적절히 해제되고 메모리 누수를 방지할 수 있습니다.
// 정리된 ver.
package com.exam;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionEx03 {
    public static void main(String[] args) {
        System.out.println("시작");

        String url = "jdbc:mariadb://localhost:3306/sample";
        String user = "root";
        String password = "123456";

        Connection conn = null;

        try {
            Class.forName("org.mariadb.jdbc.Driver");
            System.out.println("드라이버 로딩 성공");

            conn = DriverManager.getConnection(url, user, password);
            System.out.println("데이터베이스 연결 성공");

        } catch (ClassNotFoundException e) {
            System.out.println("[에러] " + e.getMessage());
        } catch (SQLException e) {
            System.out.println("[에러] " + e.getMessage());
        } finally {
            if (conn != null) { try { conn.close(); } catch (SQLException e) {}}
        }

        System.out.println("끝");
    }
}

Connection 클래스

  • 역할: Connection 객체는 애플리케이션과 데이터베이스 간의 실제 연결을 나타냅니다. Connection이 활성 상태일 때 데이터베이스와의 모든 상호작용이 가능합니다.
  • 사용 예시: DriverManager.getConnection()이 성공적으로 실행되면 Connection 객체가 생성됩니다.
  • 주요 기능:
    • 데이터베이스와 연결을 설정하고, 트랜잭션(연속된 데이터 작업)을 관리합니다.
    • SQL 쿼리를 실행할 Statement, PreparedStatement 객체를 생성합니다.
  • 주요 메서드:
    • close() - 데이터베이스 연결을 해제하여 리소스를 반환합니다.
    • commit() - 수동 트랜잭션 모드에서 작업을 확정합니다.
    • rollback() - 트랜잭션 중 오류가 발생했을 때 이전 상태로 복구합니다.

0개의 댓글

관련 채용 정보