멋사 부트캠프/JDBC

002. JDBC with Mysql

cTosMaster 2025. 4. 7. 18:06

1. 기본 DB Connect

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

public class DBUtil {
    private static final String URL = "jdbc:mysql://localhost:3306/yourdb?serverTimezone=UTC";
    private static final String USER = "yourUsername";
    private static final String PASSWORD = "yourPassword";

    public static Connection getConnection() {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            return DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}
// 위의 사항을 별도의 클래스로 만들어 재사용성 확보
// getConnect() 함수는 자주 호출되는 함수라 굳이 동적할당 하지 않음(메모리 낭비, 불편)

 

2. 기본 DB 조회 클래스

import java.sql.preparedStatement;

public List<Employee> getEmployeesByDept(Connection conn, String deptName) {
    List<Employee> employees = new ArrayList<>();
    String sql = "SELECT id, name, dept FROM emp WHERE dept = ?";
    
    try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
        pstmt.setString(1, deptName);
        try (ResultSet rs = pstmt.executeQuery()) {
            while (rs.next()) {
                Employee emp = new Employee();
                emp.setId(rs.getInt("id"));
                emp.setName(rs.getString("name"));
                emp.setDept(rs.getString("dept"));
                employees.add(emp);
            }      // ← 여기서 pstmt.close() 자동 호출됨(try-with-resources)
        }
    } 
    catch (SQLException e) {
        e.printStackTrace();
    }
    return employees;
}
// 여기에서 try-with-resources 문법을 사용했기 때문에 finally 블록이 따로 필요없음
// 추가로 try-with-resources를 사용하지 않을 경우, 나중에 한번에 처리하는 메서드를 활용해도 무방
/*
public static void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {
    try { if (rs != null) rs.close(); } catch (Exception e) {}
    try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
    try { if (conn != null) conn.close(); } catch (Exception e) {}
}
*/

 

3.