고양이 여름이의 지식채널

JAVA 데이터베이스 연동 및 사용 (JDBC) 본문

Programming/JAVA

JAVA 데이터베이스 연동 및 사용 (JDBC)

썸머캣 2023. 4. 11. 00:02

JDBC란?
JDBC(Java Database Connectivity)는 자바에서 데이터베이스와 연동하여 데이터를 주고 받기 위한 자바 API입니다. JDBC를 이용하면 여러 종류의 데이터베이스에 접속하여 데이터를 다룰 수 있습니다.

JDBC 드라이버
JDBC를 사용하기 위해서는 먼저 JDBC 드라이버를 다운로드하여 설치해야 합니다. 대부분의 데이터베이스 제조사에서 JDBC 드라이버를 제공하고 있으며, 해당 드라이버를 다운로드하여 사용해야 합니다.


데이터베이스 연결

JDBC를 사용하여 데이터베이스에 연결하기 위해서는 java.sql 패키지의 Connection 클래스를 사용합니다. Connection 객체를 생성한 후에는 createStatement() 메소드를 호출하여 Statement 객체를 생성합니다. 이 Statement 객체를 사용하여 SQL 쿼리를 실행할 수 있습니다.

import java.sql.*;

public class JdbcExample {
    public static void main(String[] args) throws SQLException {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            // 데이터베이스 연결
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password");
            // Statement 객체 생성
            stmt = conn.createStatement();
            // SQL 쿼리 실행
            rs = stmt.executeQuery("SELECT * FROM mytable");

            // 결과 출력
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");

                System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            // 연결 종료
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            if (conn != null) {
                conn.close();
            }
        }
    }
}

 

Prepared Statement

Prepared Statement를 사용하면 SQL 쿼리에 인자를 전달할 수 있습니다. PreparedStatement 객체를 생성한 후 set...() 메소드를 호출하여 인자를 설정한 후 executeQuery() 메소드를 호출하여 쿼리를 실행합니다.

String name = "John";
int age = 30;

String query = "SELECT * FROM users WHERE name = ? AND age = ?";

try (Connection conn = DriverManager.getConnection(url, username, password);
     PreparedStatement pstmt = conn.prepareStatement(query)) {
    
    pstmt.setString(1, name);
    pstmt.setInt(2, age);
    
    ResultSet rs = pstmt.executeQuery();
    
    while (rs.next()) {
        // 결과 처리
    }
    
} catch (SQLException e) {
    e.printStackTrace();
}

 
 

반응형

 
 

트랜잭션 처리

여러 개의 SQL 문을 논리적인 작업 단위로 묶어서 실행하고, 전체적으로 성공 또는 실패로 처리할 수 있는 기능을 트랜잭션(Transaction)이라고 합니다. JDBC에서는 Connection 객체를 이용하여 트랜잭션을 처리합니다.
 
Connection 객체의 setAutoCommit(false) 메서드를 사용하여 자동 커밋을 비활성화하고, 여러 개의 SQL 문을 실행한 후, commit() 또는 rollback() 메서드를 사용하여 트랜잭션을 처리합니다.

try (Connection conn = DriverManager.getConnection(url, username, password)) {
    conn.setAutoCommit(false); // 자동 커밋 비활성화
    
    try {
        // 여러 개의 SQL 문 실행
        // ...
        
        conn.commit(); // 트랜잭션 커밋
    } catch (SQLException e) {
        conn.rollback(); // 트랜잭션 롤백
        e.printStackTrace();
    }
} catch (SQLException e) {
    e.printStackTrace();
}

 
 

Connection Pool

Connection Pool은 여러 개의 Connection 객체를 미리 생성해 두고, 필요할 때마다 가져와 사용하는 방법입니다. Connection Pool을 사용하면 Connection 객체를 매번 생성하고 제거하는 비용을 줄일 수 있으며, 성능 향상을 기대할 수 있습니다.

대표적인 Connection Pool 라이브러리로는 Apache Commons DBCP, HikariCP, Tomcat JDBC 등이 있습니다.
-HikariCP를 이용한 Connection Pool 구현 예제.

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class ConnectionPoolExample {
    private static HikariConfig config = new HikariConfig();
    private static HikariDataSource ds;

    static {
        config.setJdbcUrl("jdbc:mysql://localhost/testdb");
        config.setUsername("testuser");
        config.setPassword("testpass");
        config.setMinimumIdle(5);
        config.setMaximumPoolSize(10);
        ds = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

 
JDBC(Java Database Connectivity) 기능과 데이터베이스 연동 방법에 대해 알아보았습니다. JDBC를 이용하여 데이터베이스와의 연결을 수행하고, SQL문을 실행하며, 데이터베이스와의 통신을 마친 뒤에는 반드시 Connection, Statement, ResultSet 등을 명시적으로 닫아주어야 합니다. 또한, Connection Pool을 이용하여 성능 향상을 이룰 수 있습니다. JDBC를 이용하여 데이터베이스를 다루는 방법을 숙지하면, 다양한 유형의 데이터베이스와 연동하여 데이터를 저장, 수정, 조회, 삭제할 수 있습니다.


 
JAVA 람다 표현식 설명과 예제 (Lambda Expression)

JAVA 람다 표현식 설명과 예제 (Lambda Expression)

자바 8에서는 람다 표현식이 도입되었습니다. 람다 표현식은 익명 함수를 생성하는 간단한 방법입니다. 이를 통해 코드의 가독성과 유지 보수성이 향상됩니다. 람다 표현식의 기본적인 형태는

summer-cat93.tistory.com

 
 

728x90
반응형
Comments