본문으로 바로가기

JDBC 구성 요소(아키텍처) - 2

category Java 2024. 11. 11. 10:25
 💡 JDBC 아키텍처는 Java 애플리케이션과 데이터베이스 사이의 상호작용을 담당하는 여러 구성 요소로 이루어져 있습니다. 각 구성 요소는 특정 역할을 수행하며, 이들이 어떻게 작동하는지 이해하는 것이 중요합니다.
  • JDBC 구성 요소
    • DriverManager
    • Driver
    • Connection
    • Statement
    • ResultSet
    • SQLException
    •  
    1. DriverManager
    • DriverManagerJDBC 드라이버들을 관리하는 클래스입니다. 데이터베이스 연결을 설정하기 위해 사용됩니다.
    • 애플리케이션이 데이터베이스에 연결 요청을 하면, DriverManager 는 적절한 JDBC 드라이버를 찾아 연결을 설정합니다.
    마치 여행사와 같습니다. 여행사는 여러 항공사와 협력하여 고객에게 적합한 항공편을 찾아주는 역할을 합니다. 
    // 1. MySQL JDBC 드라이버 로드
    Driver myDriver = new com.mysql.cj.jdbc.Driver();
    DriverManager.registerDriver(myDriver);
    
    -----------------------------------------------------
    
    // 2. Oracle JDBC 드라이버 로드
    Driver myDriver = new oracle.jdbc.OracleDriver();
    DriverManager.registerDriver(myDriver);
    
  • 예시 코드
  • Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
  • </aside>
  • <aside> 💡 JDBC 드라이버: JDBC 드라이버는 특정 데이터베이스에 연결하고 SQL 쿼리를 실행할 수 있도록 하는 자바 클래스입니다. 각 데이터베이스 벤더(예: MySQL, Oracle, PostgreSQL 등)는 자사 데이터베이스와 상호작용할 수 있는 JDBC 드라이버(자바 클래스)를 제공합니다.

3. Connection

  • Connection 객체는 데이터베이스와의 연결을 나타냅니다.
  • SQL 쿼리를 실행하고, 트랜잭션을 관리하며, 연결을 닫는 등의 작업을 수행합니다.

데이터베이스와의 전화선과 같습니다. 전화선을 통해 양방향 통신이 이루어집니다.

예시 코드

Connection connection =
	DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");

4. Statement

  • 설명: Statement 객체는 SQL 쿼리를 데이터베이스에 보내기 위해 사용됩니다.
  • 역할: SQL 쿼리를 실행하고 결과를 받아옵니다.

데이터베이스에 보내는 편지와 같습니다. 편지를 보내면 답장을 받게 됩니다.

예시 코드

Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT * FROM users");

5. ResultSet

  • 설명: ResultSet 객체는 SQL 쿼리의 결과를 포함합니다.
  • 역할: 데이터베이스에서 반환된 데이터를 탐색하고 읽는 데 사용됩니다.

편지의 답장과 같습니다. 답장에는 요청한 정보가 포함되어 있습니다.

예시 코드

while (resultSet.next()) {
    System.out.println("User ID: " + resultSet.getInt("id"));
    System.out.println("User Name: " + resultSet.getString("name"));
}

6. SQLException

  • 설명: SQLException은 JDBC 작업 중 발생하는 모든 예외를 처리합니다.
  • 역할: 데이터베이스 작업 중 오류가 발생하면 예외를 던져 문제를 알려줍니다.

전화 연결 중 문제가 발생하면 알람이 울리는 것과 같습니다.

예시 코드

try {
    Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root", "password");
    Statement statement = connection.createStatement();
    ResultSet resultSet = statement.executeQuery("SELECT * FROM users");
} catch (SQLException e) {
    e.printStackTrace();
}
package ch01;

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

public class MySQLJdbcExample {

	public static void main(String[] args) {
		
		// 준비물 
		 
		String url = "jdbc:mysql://localhost:3306/mydb2?serverTimezone=Asia/Seoul";
		String user = "root"; // 상용서비스에서 절대 루트 계정 사용 금지
		String password = "asd123";
		
		// 필요 데이터 타입 
		// JDBC API 레벨(자바 개발자들이 개념화 시켜 놓은 클래스들이다. )
		Connection connection = null;
		Statement statement = null; 
		ResultSet resultSet = null; 
		
		// 1. MySQL 구현체를 사용하겠다는 설정을 해야 한다. 
		// JDBC 드라이버 로드(MySQL 드라이버)   
		
		try {
			// 1. 메모리에 사용하는 드라이버(JDBC API를 구현한 클래스) 클래스를 띄운다. 
			Class.forName("com.mysql.cj.jdbc.Driver");
			
			// 2. 데이터 베이스 연결 설정 
			connection = DriverManager.getConnection(url, user, password);
			
			// 3. SQL 실행 
			statement = connection.createStatement();
			// 딱 2가지는 기억하지! 쿼리를 실행 시키는 메서드 
			resultSet  = statement.executeQuery("SELECT * FROM employee"); // select 실행시 사용한다. 
			// statement.executeUpdate(password); --> Insert, Update, delete 사용
			
			// 구문 분석 -- 파싱 
			
			// 4. 결과 처리 
			while(resultSet.next()) {
				System.out.println("USER ID : " + resultSet.getInt("id"));
				System.out.println("USER NAME : " + resultSet.getString("name"));
				System.out.println("department : " + resultSet.getString("department"));
				System.out.println("----------------------------------");
			}
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	} // end of main 

} // end of class

JDBC 드라이버 유형

  • Type 1: JDBC-ODBC Bridge Driver
  • Type 2: Native-API Driver
  • Type 3: Network Protocol Driver
  • Type 4: Thin Driver

'Java' 카테고리의 다른 글

JDBC 기본 사용법 - 4  (0) 2024.11.12
JDBC 설치 및 설정 - 3  (1) 2024.11.12
인터페이스 활용  (0) 2024.10.02
콜백 메서드 구현  (0) 2024.09.25
람다식(Lambda expression)  (2) 2024.09.13