포스트

1. jdbc란

1. jdbc란

JDBC란?(23. 12. 01)

  • Java에서 관계형 데이터베이스에 저장된 데이터를 접근하게 해주는 API
  • Java Application이 일관된 API로 데이터를 연결, 검색 등을 가능하게 한다.
  • 어떤 DBMS에 대해서 독립성을 가진다. → 모든 DB를 알지 못해도 JDBC API만 알면 동작 가능하다!

JDBC의 구조

  • Java에서 DB에 접속 할 수 있는 연결 기능 제공
  • JDBC의 구조

    Untitled

구성요소설명역할
Java Application자바 응용프로그램, 자바 웹 애플리케이션 서버(tomcat, weblogic 등)응용 프로그램 개발자, 웹 애플리케이션 서버 개발사
JDBC API자바 응용프로그램에서 데이터베이스를 연결하고 데이터를 제어할 수 있도록 데이터베이스 연결 및 제어를 위한 인터페이스와 클래스들JavaSE 개발사 (Sun microsystems, Oracle)
JDBC Driver Manager자바 응용프로그램이 사용하는 데이터베이스에 맞는 JDBC 드라이버를 찾아서 로드합니다.JavaSE 개발사 (Sun microsystems, Oracle)
JDBC Driver각 데이터베이스 개발사에서 만든 데이터베이스 드라이버데이터베이스 개발사(Oracle, MySql, PostgreSQL..

JDBC Type

  • JDBC는 네가지 타입이 있다.

Type-1 Driver or JDBC-ODBC Bridge

  • JDBC와 ODBC 사이의 브릿지 역할을 수행
  • 사용하기는 쉽지만 속도가 느린 단점이 있다.

Untitled

Type-2 Driver or Native API Partly Java Driver

  • type1 보다는 성능이 우수하지만 라이브러리 설치로 인해 비용이 증가
  • DB 제품의 변경에 취약

Untitled

Type-3 Network Protocal Driver ( fully java driver )

  • Type3 JDBC 드라이버는 JDBC 미들웨어 서버와 독점 프로토콜로 통신
  • JDBC 미들웨어는 요청된 프로토콜을 데이터베이스 호출로 변환
  • 데이터 베이스 변경에 유연하지만 많은 네트워크를 호출함으로 속도가 느리다.

Untitled

Type-4 Thin Driver ( fully java driver )

  • 가장 인기가 좋다
  • DB와 다이렉트로 통신 → 순수 자바 드라이버
  • 라이브러리와 미들 웨어 서버가 필요 없다.
  • 성능적으로 가장 우수하다.

Untitled

Java JDBC API

  • JDBC API는 java 언어 차원에서 데이터 엑세스 제공
  • JDBC API Package
    • java.sql
    • javax.sql
      • Java EE 애 있던 jdbc 확장용 기능 → JDBC 3부터는 Java SE의 일부로 포함됨.
      • java.sql 의 확장, 추가적인 기능

JDBC Architecture

  • JDBC를 사용하여 Two-Tier 또는 Three-Tier 아키텍쳐를 구성 할 수 있습니다.

Two-Tier Architecture

  • Client Layer - Server Layer로 구성 됩니다.
  • 특정 DB와 통신에 있어 JDBC 드라이버가 필요합니다.
  • Client 프로그램이 DB에 바로 접속하는 구성이라 확장성에 제한이 있을 수 있다.
  • 클라이언트 - 서버 아키텍쳐라고 한다.

Untitled

Three-Tier Architecture

  • Three-tier 아키텍처는 비즈니스 로직을 담은 미들웨어가(Tomcat) 추가됩니다.
  • 이 아키텍처는 사용자 PC에서 데이터베이스로 직접적인 통신은 없습니다.
  • 사용자의 요청은 미들웨어로 전송됩니다.
  • 데이터베이스의 처리 또한 결과를 미들웨어로 전송 시킨 뒤 사용자와 통신 \

Untitled


JDBC 드라이버 로딩

MySQL JDBC 드라이버 로딩 (Reflection 활용)

1
Class.forName("com.mysql.cj.jdbc.Driver");

DB Connection 생성

1
Connection connection = DriverManager.getConnection(URL, user, password);

Statement

  • Java에서 SQL 문을 실행하기 위해서는 Statement 클래스를 이용
  • SQL 문의 결과를 얻어오는데에는 ResultSet 클래스를 이용

Statement 사용

  • Connection 객체를 사용해 결과를 보낸다.

    1
    
      Statement statement = connection.createStatement();
    
  • PreparedStatement 를 사용하여 더 효율성을 높이기 가능

    1
    2
    3
    
      PreparedStatment psmt = connection.prepareStatement("SQL data");
      pstmt.setString(1, request.getParameter("username");
      pstmt.setString(2, request.getParameter("email");
    

Statement의 Methods

executeQuery()

  • SELECT 쿼리를 실행할 때 사용합니다.
  • ResultSet 을 결과를 반환합니다.

executeUpdate()

  • INSERT 등의 DDL을 실행하기 위해서 사용합니다.
  • int 타입으로 성공 여부나 처리된 데이터 수를 반환합니다.

결과 받기

  • 가져온 데이터를 처리하기 위해서는 ResultSet 객체가 필요하다.
  • ResultSet 은 커서를 다룰 수 있게 한다. (초기행은 첫번째 행 이전)

JDBC 로딩

  • DbUtils
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class DbUtils {
    public DbUtils(){
        throw new IllegalStateException("Utility class");
    }

    public static Connection getConnection() {
        Connection connection = null;
        try {
            //todo connection.
            connection = DriverManager.getConnection("jdbc:mysql://133.186.241.167:3306/nhn_academy_3","nhn_academy_3","Jc1?tjnLZWi7LTIH");
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
        return connection;
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.