IT/JAVA

JDBC + MYSQL 연동

_KH_ 2025. 2. 21. 23:22

[JDBC]
※ JDBC란?

자바 프로그램 안에서 SQL을 실행하기 위해 데이터베이스를 연결해주는 응용프로그램 인터페이스


JDBC는 4파트로 구성된다.
1. 드라이버 로드(메모리에 데이터 적재)
Class.forName("com.mysql.cj.jdbc.Driver"); // 클래스 이름으로 읽어오기 
 
코드 중복 감소와 함수화를 위해 상단에 먼저 다 나열해놓고 사용하기.

static final String driverName = "com.mysql.cj.jdbc.Driver";

 
그리고 try문 안에서

Class.forName(driverName);

로 연결해주면 된다.
 
Class.forName(driverName) 의 뜻
: MySQL JDBC 드라이버를 메모리에 로드하는 역할.
클래스 이름을 문자열로 전달하면 JVM이 해당 클래스를 찾아서 메모리에 로드함.


2. DB 연결
 
3. 데이터 read, write
 
4. DB 연결 해제


[JDBC Util]
: 자바에서 MySQL과 연결하는 기능을 제공하는 유틸리티 클래스.
DB 연결(connect()), 연결 해제(disconnect()) 기능 2가지 존재
 
■ "템플릿 코드"
>> Xxxx Util.java 클래스 파일은 대부분 템플릿 코드다.
>> MVC 패턴 중 M이 할 일
 
■ 사용하는 이유 
: [ 함수화, 컴포넌트화, 모듈화, 고도화, 성능최적화 ]
① "패턴화 된 코드(==템플릿)" 코드 줄이기
② 오류의 파급효과 절감
③ 개발 시간 및 비용 절감
④ 유지보수 용이
 
■ JDBC Util 코드

package model.common;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
// 라이브러리 같은거라 생각
public class JDBCUtil { // util들은 코드를 줄이는 것이 목적. (객체를 만들어서 여러 번 사용하는 것이 목적이 아님)
	// 그러므로 static으로 선언한다.
	// 연결했을 때 최종적으로 확보되는 것. 드라이브 로드, DB 연결 들어감
	// 연결 진행
	static final String driverName = "com.mysql.cj.jdbc.Driver";
	static final String url = "jdbc:mysql://localhost:3306/test";
	static final String userName = "root";
	static final String password = "1234";
	// 하드코딩 피하기 위해 상수화 하여 위에 
	public static Connection connect() {
		Connection conn = null;
		try {
			// 1. 드라이버 로드(메모리에 데이터 적재)
			Class.forName(driverName);
			// 2. DB 연결
			conn = DriverManager.getConnection(url,userName,password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn; // 최종적으로 확보해야 하는 것
	}

	// 연결 해제
	public static void disconnect(Connection conn, PreparedStatement pstmt) {// 외부에서 받아서 해제
		try { // 4. 연결 해제
			pstmt.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

 
테이블이 많아질수록 모델의 DAO, DTO 파일도 갯수가 많아지기 때문에 패키지를 나누어 관리하는데,
JDBC Util 같은 경우에는 그 어느쪽에도 속하지 않기 때문에 model.common 패키지에 보관한다.