JDBC 드라이버는 자바 애플리케이션과 데이터베이스를 연결하는 중요한 역할을 합니다. 드라이버 로딩은 JDBC를 사용하기 위한 첫 번째 단계입니다.
java.lang.Class
Class.forName()
, System.setProperty()
Class.forName()
메서드를 사용해 JDBC 드라이버 클래스를 로드합니다. 이 과정에서 드라이버가 메모리에 로드되고, 데이터베이스 연결에 필요한 설정이 완료됩니다.Class.forName("org.mariadb.jdbc.Driver"); // 예: MariaDB 드라이버 로딩
드라이버 로딩 후, 데이터베이스에 연결을 설정합니다. 이 과정에서는 DriverManager
를 통해 Connection
객체를 생성하여 데이터베이스와의 통신 경로를 마련합니다.
java.sql.DriverManager
, java.sql.Connection
DriverManager.getConnection()
DriverManager.getConnection()
메서드를 사용하여 데이터베이스 URL, 사용자 이름, 비밀번호를 전달하여 데이터베이스에 연결합니다. 연결이 성공하면 Connection
객체가 반환됩니다.Connection conn = DriverManager.getConnection("jdbc//localhost:3306/sample", "user", "password");
데이터베이스와 연결되면 SQL 문을 전송할 수 있는 Statement
, PreparedStatement
, CallableStatement
중 하나를 생성합니다. 이 객체들은 SQL 쿼리를 실행하고, 결과를 가져오는 역할을 합니다.
java.sql.Statement
, java.sql.PreparedStatement
, java.sql.CallableStatement
Statement
: 정적 SQL 문을 실행할 때 사용합니다.PreparedStatement
: 파라미터화된 SQL 문을 실행할 때 사용하며, 보안성과 성능이 향상됩니다.CallableStatement
: 저장 프로시저를 호출할 때 사용합니다.Statement stmt = conn.createStatement();PreparedStatement pstmt = conn.prepareStatement("INSERT INTO employees (empno, ename) VALUES (?, ?)");
SQL 문을 Statement
나 PreparedStatement
객체를 통해 데이터베이스로 전송하여 실행합니다. SQL 문이 SELECT
문인지, 아니면 INSERT
, UPDATE
, DELETE
와 같은 DML 문인지에 따라 다른 메서드를 사용합니다.
executeQuery()
, executeUpdate()
executeQuery()
: SELECT
문을 실행하고, 결과로 ResultSet
을 반환합니다.executeUpdate()
: INSERT
, UPDATE
, DELETE
문을 실행하고, 영향을 받은 행의 수를 반환합니다.ResultSet rs = stmt.executeQuery("SELECT * FROM employees"); // SELECT 쿼리 실행
int rowsAffected = pstmt.executeUpdate(); // DML 실행
SELECT
쿼리 실행 결과는 ResultSet
객체에 저장됩니다. ResultSet
은 조회된 데이터를 행 단위로 접근할 수 있도록 지원하며, 각 행의 열 데이터를 가져올 수 있습니다.
java.sql.ResultSet
ResultSet
객체는 SQL SELECT
쿼리의 결과를 저장하며, 행 단위로 결과를 순회할 수 있습니다.while (rs.next()) {
int empno = rs.getInt("empno");
String ename = rs.getString("ename");
}
모든 데이터베이스 작업이 완료되면 Connection
, Statement
, ResultSet
등의 리소스를 해제하여 자원을 효율적으로 관리합니다.
java.sql.Connection
, java.sql.Statement
, java.sql.ResultSet
close()
close()
메서드를 사용하여 각 객체를 닫고, 데이터베이스와의 연결을 해제합니다. 이 단계는 자원 누수를 방지하기 위해 필수적입니다.rs.close();
stmt.close();
conn.close();
JDBC 작업 중 예외가 발생할 수 있으므로, SQLException
을 통해 예외 처리를 수행합니다.
java.sql.SQLException
SQLException
예외로 처리하며, 각 예외의 메시지를 통해 구체적인 오류 정보를 확인할 수 있습니다.try {
// 데이터베이스 연결 및 작업 수행
} catch (SQLException e) {
System.out.println("SQL 오류: " + e.getMessage());
}