
• JDBC (Java Database Connectivity): 자바에서 데이터베이스와 상호작용하기 위한 표준 API입니다.
• DriverManager: 데이터베이스 드라이버를 관리하고, 데이터베이스 연결을 설정합니다.
• Connection: 데이터베이스와의 연결을 나타내는 객체입니다.
• Class.forName(“com.mysql.cj.jdbc.Driver”): JDBC 드라이버를 메모리에 로드하여 데이터베이스와의 통신을 가능하게 합니다.
드라이버 로드 : - Class.forName("com.mysql.cj.jdbc.Driver");
- 데이터베이스 드라이버를 메모리에 로드한다.
드라이버가 없을 경우 ClassNotFoundException이 발생한다.
데이터베이스 연결 : - Connection conn = DriverManager.getConnection(url, user, password)
- 데이터베이스 URL,사용자명, 비밀번호를 사용하여 데이터베이스와 연결.
Statement 생성 : - Statement stmt = conn.createStatement();
- SQL 쿼리를 실행하기 위한 Statementr 객체를 생성.
SQL 쿼리 실행 : -ResultSet rs = stmt.executeQuery("SELECT * FROM table_name");
-SQL 쿼리를 실행하고 결과를 ResultSet 객체로 반환받는다.
연결 종료 : - conn.close();
- 데이터베이스와의 연결을 종료.
java
package org.scuola.jdbc_ex.test;
// 자바 패키지 선언. - 클래스를 논리적으로 그룹화하여 관리하기 위함.
//import문들 : 필요한 클래스를 가져온다. - 외부 라이브러리나 다른 패키지의 클래스를 사용하기 위하. - 불필요한 임포트가 없도록한다.
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.scuola.jdbc_ex1.common.JDBCUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionTest {
@Test
//JUnit테스트 메소드임을 나타냄- 테스트 프레임워크에서 이 메소드를 실행할 수 있도록 한다.
@DisplayName("jdbc_ex1 데이터베이스에 접속한다. ")
//테스트 메소드의 설명을 지정 - 테스트 실행 결과를 이해하기 쉽게 만듬.
// 이 코드는 jdbc를 이용하여 mysql 데이터베이스에 연결하고 연결을 해제하는 과정을 포함한다. 각각의 개념과 논리적 과정을 심층 분석해보자.
public void testConnection() throws SQLException,
ClassNotFoundException {
/* <메소드 선언> 메소드를 선언한다. public은 접근 제어자로 다른 클래스에서도 이 메소드에 접근할 수 있음을 의미한다.
- 예외처리 : throw SQLException, ClassNotFoundException은 이 메소드가 실행 중에 SQLException이나 ClassNotFoundException을 발생시킬 수 있음을 명시한다. */
Class.forName("com.mysql.cj.jdbc.Driver");
//드라이버 로드
/* MySQL JDBC 드라이버를 메모리에 로드.
- 데이터베이스와의 통신을 가능하게 하기 위해 jdbc 드라이버를 로드함.
- 드라이버 클래스 이름을 정확히 입력한다.
그렇지 않으면 ClassNotFoundException이 발생한다. */
String url = "jdbc:mysql://127.0.0.1:3306/jdbc_ex1";
//연결 문자열
/* 데이터베이스를 연결하기 위한 URL 문자열을 선언한다.
구성요소 : 1) jdbc:mysql://는 JDBC와 MySQL프로토콜을 사용함을 나타냄.
2) 127.0.0.1는 로컬호스트 ip주소.
3) 3306은 MySQL의 기본 포트 번호
4) jdbc_ex1은 데이터베이스 이름. */
String id = "jdbc_ex1";
String password = "jdbc_ex1";
//사용자명과 비밀번호 선언
/* 데이터베이스에 접속하기 위한 사용자명과 비밀번호 선언.
데이터베이스 인증을 위해 필요함. */
Connection conn = DriverManager.getConnection(url,id,password);
//데이터베이스 연결
/* 데이터베이스에 연결을 설정하고 Connection객체를 반환.
데이터베이스 작업을 수행하기 위한 연결을 만듬.
올바른 url, 사용자명, 비밀번호를 사용하지 않으면 SQLException이 발생. */
System.out.println("DB 연결 성공");
//성공 메시지 출력
/* 연결이 성공했음을 콘솔에 출력 */
conn.close();
//연결 해제
/* 사용한 리소스를 반환하여 메모리 누수를 방지.
모든 데이터베이스 작업이 완료되면 연결을 닫아야 한다. */
}
}
1. 메소드 선언:
testConnection 메소드를 선언하여 데이터베이스 연결을 테스트할 준비를 합니다. 메소드가 SQLException과 ClassNotFoundException을 던질 수 있음을 명시합니다.
2. 드라이버 로드:
Class.forName("com.mysql.cj.jdbc.Driver");를 통해 MySQL JDBC 드라이버를 메모리에 로드합니다. 이 과정이 성공하면 데이터베이스와의 통신이 가능합니다.
3. 연결 문자열 선언:
데이터베이스에 연결할 URL 문자열을 선언합니다. 이 문자열에는 프로토콜, IP 주소, 포트 번호, 데이터베이스 이름이 포함됩니다.
4. 사용자명과 비밀번호 선언
데이터베이스에 접속하기 위한 사용자명과 비밀번호를 선언합니다. 이는 데이터베이스 인증에 사용됩니다.
5. 데이터베이스 연결:
DriverManager.getConnection(url, id, password);를 호출하여 데이터베이스에 연결합니다. 이 연결은 Connection 객체로 반환되며, 이를 통해 데이터베이스 작업을 수행할 수 있습니다.
6. 성공 메시지 출력:
연결이 성공했음을 확인하기 위해 “DB 연결 성공” 메시지를 콘솔에 출력합니다.
7. 연결 해제:
데이터베이스 작업이 완료되면 conn.close();를 호출하여 연결을 종료합니다. 이는 리소스 누수를 방지하기 위해 필요합니다.