데이터베이스

[DB] Eclipse에 JDBC 연동하기 (2)

Dev-SeeOne 2020. 4. 12. 23:04

이전 포스팅에서 Eclipse에서 JDBC를 사용하기 위한 기본적인 설정에 대해 알아보았다.

 

이번 포스팅에서는 지난 포스팅에서 언급한 JDBC가 실행되는 순서를 바탕으로 직접 JDBC를 이용하여 데이터베이스에 접근하기 위한 객체를 생성해보자! 🐱‍🐉

 

 


지난 포스팅의 내용을 다시 살짝 언급하자면 JDBC는 다음과 같은 순서로 실행되어진다. 이번에 설명할 순서도 지난번에 말한 순서와 같지만 좀 더 세분화 해서 적어보도록 하겠다.

 

1. JDBC 드라이버 등록

 

2. DriverManager의 getConnection() 을 이용해서 Connection 객체를 얻어낸다.

 

3. Connection 객체의 createStatement() 를 이용해서 Statement 객체를 얻어낸다.

 

4. Statement 객체의 executeQuery()executeUpdate() 를 이용해서 SQL을 데이터베이스에 전송한다.

 

5. ResultSet 객체와 getXXX() 을 이용하여 SQL 문장의 실행 결과를 얻는다.

 

6. Statement, Connection, ResultSet 객체를 close() 함수를 호출하여 연결을 끝마친다.

 

지난번과 다르진 않지만 각 단계에서 수행해야 할 동작을 좀 더 세분화하여 표시해보았다. 이번 포스팅에서 다룰 내용은 2번 까지의 내용이다. 이제 한 단계 한 단계씩 코드를 통해 살펴보면서 직접 구현해 보도록하자! 🐱‍🐉

 


우선 JDBC를 이용하여 데이터베이스와 접속할 객체를 생성한다. 편의를 위해 DBUtil 이라는 이름으로 클래스를 생성하도록 하겠다.

 

DBUtil 클래스는 다음과 같은 구조로 이루어져 있다.

 

 

변수

 

  • url : 데이터베이스 서버의 주소를 저장할 변수
  • driver : JDBC 드라이버를 생성하기 위한 class 이름을 저장한 변수 
  • id : 데이터베이스에 접속하기 위한 id
  • password : 데이터베이스에 접속하기 위한 password

 

메서드

 

  • getConnection() : DriverManager의 getConnection() 메서드를 이용하여 connection 객체를 반환한다.
  • close() : 데이터베이스 작업을 끝마치고 연결을 종료하기 위한 메서드

 

아래는 위의 DBUtil 객체를 구현한 코드이다.

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

public class DBUtil {
	static final String url = "jdbc:mysql://server_address:server_port/database_name"
			+ "?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8";
	static final String driver="com.mysql.cj.jdbc.Driver";
	static final String id="id";
	static final String password="password";
    
	static {
		try {
			Class.forName(driver); 
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException{
		return DriverManager.getConnection(url, id, password);
	}

	public static void close(AutoCloseable c) {
		try {
			c.close();
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}

우선 눈여겨 볼 것은 Class.forName(driver) 부분이다. 

 

자바에서 객체를 생성하는 방법은 여러가지가 있다. 일반적으로 new 키워드를 이용해서 객체를 생성하는 방법이 있고 위의 코드에서 사용한 방법은 Class.forName() 을 사용한 방법으로 사용할 클래스의 이름을 알고, 해당 클래스에 default 생성자가 정의되어 있다면 위의 방법으로 생성할 수 있다.

 

이 때 매개변수로 전달되는 클래스 이름은 패키지 명을 포함한다.

 

이 때 드라이버를 생성하는 코드를 static 블록으로 묶어서 처리했는데, 객체를 여러번 생성하더라도 공통의 드라이버를 사용하기 때문에 드라이버는 최초 한 번만 실행되면 된다. 때문에 static 블록 내부에서 Class.forName(driver) 을 사용하여 드라이버를 생성하는 작업을 수행한다. 

 

 

다음 포스팅에서는 JDBC를 통해 데이터베이스에 접근하여 데이터를 조회하는 방법에 대해 다루어보자!