Java Project 와 SQL Database 연결하기 - JDBC (Java DataBase Connectivity) 활용, MySQL

Java Project - MySQL 연결: Java DataBase Connectivity

수업에서 MySQL을 활용한 데이터베이스 관리 방법을 배웠다. Java 프로젝트와 MySQL로 구축한 데이터베이스를 연결해 보자!

프로젝트에서 MySQL을 연결하려면, 초기 설정이 필요하다. 한번 살펴보자!

다운로드받기

MySQL :: Download Connector/J

MySQL 사이트에 들어가면 관련 .jar 파일을 받을 수 있다.

image

여기서 두 번째 파일을 받아 압축을 푼 후, .jar 파일을 프로젝트 내 라이브러리 폴더 lib에 담으면 된다.

java src 폴더 내에 있는 DBUtil을 완성해 주면 된다.

DBUtil 클래스 완성하기

정확히 말하면, DBUtil 클래스는 인스턴스를 제공하고, DB 연결이 완료되었을 때 없애는 작업만 한다.

SQL문을 작성하고, 결과를 다루는 부분은 Dao 파트에서 한다. 오늘은 개발 환경 구축 시 DB 연결과 연결 해제만 정리해 보았다.

연결할 데이터베이스의 url과 이름을 설정한다. 편리한 유지보수를 위해 final 변수를 활용하여 선언하고, 적용하자!

DB 연결 및 DBUtil 싱글톤 구현

DriverManager는 기본적으로 제공되는 클래스이고, 여기서 Connection을 가져온 다음, Connection으로 PreparedStatement를 통해 ResultSet을 가져온다. 따라서 생성 순서도 DriverManager -> Connection -> PreparedStatement -> ResultSet 순이다.

// DB와 연결하기위해 필요한 DB의 URL
private final String url = "jdbc:mysql://localhost:3306/dburl입력";
// DB의 USER 이름
private final String username = "id";
// 위 USER의 PASSWORD
private final String password = "password";
// Mysql 드라이버 클래스 이름
private final String drivername = "com.mysql.cj.jdbc.Driver";
private static DBUtil instance = new DBUtil();

private DBUtil() {
	try {
		Class.forName(drivername);
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
	}
}

public static DBUtil getInstance() {
	return instance;
}
	public Connection getConnection() throws SQLException {
	return DriverManager.getConnection(url, username, password);
}

제거 순서는 반대로 해야 한다. ResultSet -> PreparedStatement -> Connection 순이다.

// 자원 해제
public static void close(Connection conn, PreparedStatement pstmt) {
	try {
		if (pstmt != null)
				pstmt.close();
		} catch (SQLException e) {
		// TODO Auto-generated catch block
			e.printStackTrace();
		}
	try {
		if (conn != null)
			conn.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}
public static void close(Connection conn, PreparedStatement pstmt, ResultSet rs) {
	try {
		if (rs != null)
			rs.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		if (pstmt != null)
			pstmt.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		if (conn != null)
			conn.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}