JDBC : Connection

ROK·2022년 8월 8일
0

JDBC

목록 보기
1/4
post-thumbnail
post-custom-banner

포스팅에 앞서 이 글은 MySQL을 기준으로 포스팅했으며, cdspacenoob님의 포스팅을 참조했습니다.

JDBC란?

JDBC는 Java에서 Database를 사용할 수 있게 해주는 API로 JDBC : Java DataBase Connectivity의 약자이다.

Database 종류와 상관없이 사용할 수 있다.

JDBC Driver

JDBC를 사용하기 위해서는 JDBC 드라이버를 설치해야한다.
JDBC 드라이버는 각 DB에 맞는 것을 찾아 설치하면 된다.

  • JDBC Driver는 DB와 통신을 담당하는 자바 클래스
  • DB 종류에 맞는 드라이버를 사용하면 된다. (보통 .jar 파일)
  • Class.forName(DB에 맞는 Driver)를 사용해 로딩한다.
  • 대표적으로 다음과 같다
    • MySQL : com.mysql.cj.jdbc.Driver
    • Oracle : oracle.jdbc.driver.OracleDriver
    • MSSQL : com.microsoft.sqlserver.jdbc.SQLSeverDriver

JDBC 동작 순서

JDBC의 동작 순서는 아래 순서대로 작동한다.

  1. DB Driver를 Java 메모리 상으로 load : Class.forName(driver)

  2. Driver를 통해 Java와 DB를 연결(connection)한다.

    • 연결할 때, url, Id, password를 넘겨준다
    • url은 DB의 위치, Id는 DB의 계정(MySQL 기준 보통 root), password (사용자가 설정한 DB의 비밀번호)
    • con = DriverManager.getConnection(url, Id, password)
  3. 연결이 됐다면, statement 또는 preparedstatement로 쿼리문을 전송한다.

    • stmt = con.createStatement()
    • pstmt = con.prepareStatement()
  4. 쿼리 작성 String으로 선언하고, 변수에 입력

    • String sql = "SELECT * FROM book"
  5. 작성한 쿼리 전송

    • res = stmt.executeQuery(sql)
  6. 쿼리문이 SELECTResultSet으로 받고, 그 외에는 int로 받는다. (반환 타입)

  7. 쿼리를 다 사용했다면, ResultSet부터 역순으로 리소스 close()를 진행한다.

JDBC 실습

가장 먼저 JDBC Driver인 Connector를 설치해야한다.
일반적으로 구글에 MySQL JDBC라고 검색하면 바로 나온다.

굳이 설치하지 않고 Platform Independent를 선택해 zip파일로 다운받았다.

압출을 풀고 나오는 .jar파일을 이클립스에 연결시켜준다.

순서가 좀 많이 길다
프로젝트 우클릭 >> properties >> Java Build Path >> 상단에 Libraries 선택 >> Add Library

User Library >> User Libraries >> New >> 이름 입력(jdbc로 설정)

1, 2, 3 순서대로 따라가면 된다. 나는 이미 만들어 놓은 jdbc 라이브러리가 있기 때문에 아래에 경고가 표시됨


jdbc 선택 >> Add External JARs... >> 다운받은 connector 파일 선택

Apply and Close >> Finish

위 사진과 같이 나온다면 성공적으로 마무리됨

Java, MySQL 연결(Connection)하기

위 과정은 Java와 SQL을 연결하기 위해 준비단계이고, 이제 코드를 통해 직접 연결할 차례이다.

위에서 동작 순서를 설명했던 과정 중 DB Driver를 Java 메모리 상으로 로드하고, JAVA와 DB를 연결하는 과정까지 진행한다.

DB Driver load

위의 일련의 과정을 통해 Import한 Driver 파일을 객체화하는 과정이다.
이를 통해 DriverManager 클래스를 사용할 수 있다.

  • Class.forName(driver)와 같이 사용한다.

코드

String driver = "com.mysql.cj.jdbc.Driver";

...

Class.forName(driver);

driver 변수를 String 타입으로 선언하고 호출할 때, 매개변수로 입력한다.

Java, DB 연결(Connection)

load를 한 이후 Java와 DB를 연결한다.

  • DB 종류 별로 정해진 url
  • 사용자가 설정한 DB의 Id
  • 사용자가 설정한 DB의 Password

위 세 가지를 사용해 연결한다.

  • con = DriverManager.getConnection(url, Id, password)와 같이 사용

Connection이 완료되면 statement 또는 preparedstatement 클래스를 사용할 수 있다.

String url = "jdbc:mysql://localhost:3306/MySQL?serverTimezone=UTC";
String id = "root";
String pwd = "1234";

...

con = DriverManager.getConnection(url, id, pwd);

위 load 과정과 동일하게 각 요소들을 미리 변수로 선언하고, 클래스 메서드를 호출할 때 매개변수로 입력한다.

전체 코드

위 코드 설명은 아주 간략하게 한 것이고 전체 코드를 보자

package test

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

public class ConnectionManager {

	public static Connection getConnection() {
    	Connection con = null;
        String driver = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test";	// jdbc는 DB 이름
		String id = "root";
		String pwd = "1234";
        
        try {
        	Class.forName(driver);
            try {
            	con = DriverManager.getConnection(url, id, pwd);
                System.out.println("Connected...");
			} catch (SQLException e) {
            	// TODO Auto-generated catch block
                System.out.println("Connection Failed!");
                e.printStackTrace(); 	// 예외 발생시 내용 출력
			}
		} catch (ClassNotFoundException e) {
        	// TODO Auto-generated catch block
            System.out.println("Connection Failed. Check Driver or URL");
            e.printStackTrace(); 		// 예외 발생시 내용 출력
		}
        
        return con;
	}//getConnection()
}

코드를 보면 어렵게 느껴질 수도 있지만 굉장히 단순하다.
순서만 지켜서 load -> connection 순으로 진행하면 되는 것으로 굉장히 심플하다.

이제 완성했으니 Main 클래스를 생성해 실행해보자

Connection 확인하기

Main 클래스

package test;

public class main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ConnectionManager.getConnection();
	}
}

성공적으로 연결된 것을 확인할 수 있다.

마무으리

위 과정을 모두 완료했다면 JAVA와 DB가 Connection을 통해 서로 정보를 주고 받을 준비가 완료되었다.

profile
하루에 집중하자
post-custom-banner

0개의 댓글