본문 바로가기
DB/이론 및 개념

[day_02] DB / 03. JDBC (Java Database Connectivity)

by 파프리카_ 2020. 8. 7.
728x90
반응형

JDBC (Java Database Connectivity)란?

 

 

→ 자바 데이터베이스 프로그래밍 API 

→ 자바 어플리케이션과 데이터베이스 연동을 위한 기술

: 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는  "프로그래밍 인터페이스"이다. 

 


JDBC API

  1. Java 표준 제안자(Sun MicroSystems)
    : JDBC 명세(기준)를 제공한다
  2. DB Vendor
    : JDBC 명세를 기준으로 JDBC API를 개발하여 배포한다
  3. Java 응용 프로그램 개발자
    : DB Vendor에서 배포한 JDBC API를 받아 JDBC 명세를 보고 프로그램을 작성한다

* java.sql library 설명링크 : https://docs.oracle.com/javase/8/docs/api/java/sql/package-summary.html

 

java.sql (Java Platform SE 8 )

Interface Summary  Interface Description Array The mapping in the Java programming language for the SQL type ARRAY. Blob The representation (mapping) in the Java™ programming language of an SQL BLOB value. CallableStatement The interface used to execute

docs.oracle.com

 


JDBC의 역할

 : 통신자의 역할

 - 응용프로그램과 DBMS간의 통신을 중간에서 번역해주는 역할을 한다.

 


JDBC Programming Pattern | 개발 단계

  1. Driver loading
    : 사용하는 데이터 베이스에서 지원하는 드라이버(ex.ojdbc.jar)를 로딩하여,
      데이터베이스와 java 어플리케이션 연동을 위한 기본정보를 메모리에 적재한다.
    : class loading 단계에서 driver도 loading해주는 작업
    → Class.forName ([driver path])

  2. Connection(연결)
    : 데이터베이스와 연결하고, 정보를 반환받아 Connection 객체에 저장한다.
    : Connection 객체에 속한 메서드로 SQL을 실행할 수 있다. 
    → Connection con = DriverManager.getConnection([db url], [sql id], [sql password])

  3. Statement/PreparedStatement
    : 데이터베이스와 소통하기 위한 SQL을 실행할 수 있는 메서드를 지원한다.
    → String sql = "SELECT id, name FROM member WHERE address=? AND name=?"
    → PreparedStatement pstmt = con.prepareStatement(sql)

    + SQL 문에 ? 가 있을 경우 SQL문을 완성해주기 위해 setString을 이용하여 할당한다
    setString(n, value) : n - n번째 물음표 / value - 할당할 문자열
    → setInt(n, value) : n - n번째 물음표 / value - 할당할 숫자형

  4. SQL 실행 
    1) select의 경우 (ResultSet에 결과 값 할당)
    →  ResultSet rs = pstmt.executeQuery()

    2) insert, delete, update 의 경우
    : 결과에 영향을 준 row 수를 반환 (int type)

    → pstmt.executeUpdate()

  5. close(Connection, Statement, ResultSet)
    : 역순으로 닫아주기
    →  rs.close()
    → pstmp.close()
    → con.close()

 

728x90
반응형