백엔드 과정/jdbc
[JDBC] Connection 생성하기
mim
2022. 2. 3. 20:32
반응형
이전 포스팅에서는 DriverManager를 이용하여 커넥션을 생성하는 코드를 작성해보았다.
메인 클래스에서 driver 연결하는 코드를 작성하기에는 너무 길기 때문에 jdbc 연결을 해주는 클래스를 따로 만는 것이 좋다. 이렇게 작성한 클래스를 import하고, getConnection() 메소드를 통해 인스턴스를 생성해주는 것이 좋다.
Connection
특정 데이터 원본과 연결 된 커넥션을 나타내며
Statement 인스턴스를 생성할 때도 Connection 인스턴스를 사용하여 createStatement() 메소드를 호출하여 생성한다.
SQL 문장을 실행시키기 전에 우선 Connection 인스턴스가 있어야 함
메인 클래스에서 드라이버 연결을 해주는 getConnection() 메소드를 호출한다. (connection 객체를 반환)
package com.greedy.section02.template;
import java.sql.Connection;
import static com.greedy.section02.template.JDBCTemplate.*;
public class Appliction {
public static void main(String[] args) {
Connection con = getConnection();
System.out.println(con);
close(con);
}
}
jdbc 역시 db에 연결하는 외부 입출력 작업이기 때문에 try-catch문으로 감싸야 한다.
연결이 끝나면 finally문 안에 close()로 자원을 반납해야 하는데, 이 역시 close() 메소드에 Connection 객체를 매개변수로 전달하여 작성할 수 있다.
public class JDBCTemplate {
public static Connection getConnection() {
/* Connection 레퍼런스 변수 생성 */
Connection con = null;
Properties prop = new Properties();
try {
prop.load(new FileReader("config/connection-info.properties"));
String driver = prop.getProperty("driver");
String url = prop.getProperty("url");
/* DriverManager : jdbc드라이버를 통해 커넥션을 만드는 역할 forName()를 통해 생성 */
Class.forName(driver);
/* getConnection() 메소드로 인스턴스 생성*/
con = DriverManager.getConnection(url, prop);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} // 여기에 finally로 close() 하면 메소드 호출과 동시에 close()되버림.
// 따로 메소드 작성하여 닫아줘야 할 때 메소드 호출할 수 있도록 함
return con;
}
/* close 메소드 생성 */
public static void close( Connection con) {
try {
if (con != null && !con.isClosed()) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
반응형