JDBC

mingggkeee·2022년 3월 18일
0

JDBC(Java Database Connectivity)

  • 자바 언어로 작성된 표준 SQL 인터페이스 API
  • 다양한 종류의 RDBMS를 연결하고 검색 가능
  • DBMS 별로 JDBC Driver 작성이 필요하다.

출처 : https://velog.io/@withcolinsong/JDBC%EB%9E%80

java.sql 패키지

DB 연결 관련

  • DriverManager

    • JDBC API에서 제공되는 Concrete 클래스
    • Driver 인터페이스를 구현한 객체들을 관리
    • JDBC URL을 이용해 메모리에 로드 된 Driver 검색 -> connection 연결
  • Driver

    • DBMS와 연결을 맺기 위한 인터페이스
  • Connection

    • DBMS와 세션을 유지하는 객체
    • 하나의 접속자를 나타내므로 사용 후 종료 필요

Statement

  • SQL을 처리할 수 있는 객체 - 대부분의 SQL 처리

  • SQL Injection의 주범

  • PreparedStatement

    • SQL문을 Pre compile하여 처리
    • 동일한 형태의 질의를 여러 번 반복하는 경우 Statement보다 유리
  • CollableStatement

    • DB의 Stored Procedure를 처리하는 인터페이스
  • ResultSet

    • Statement를 이용한 SQL질의 결과를 나타내는 인터페이스 - 커서
    • 커서 스크롤링 기능 - first(), next(), previous(), last()

JDBC 주요 인터페이스의 사용 관계

  • DriverManager는 여러 개의 Connection 관리
  • Connection은 Statement를 통해 동시에 여러 개의 Query 가능
  • 하나의 Statement는 동시에 하나의 ResultSet만을 가질 수 있다.
  • Connection, Statement, ResultSet은 사용 후 close 해줘야 한다.

JDBC 프로그래밍 절차

  • JDBC드라이버 등록

    Class.forName()

  • DriverManager

    getConnection() -> Connection객체 획득

  • Connection

    createStatement() -> Statement객체 획득

  • Statement

    executeQuery(), executeUpdate()
    SQL 전송 -> ResultSet 객체 리턴

  • ResultSet

    get??? () -> SQL문장의 실행 결과 확인

  • Resource 반납

    close() 호출
    ResultSet -> Statement -> Connection 순서

출처 : https://o-jing.tistory.com/28

DTO

  • M-V-C간 데이터 교환을 위한 객체 활용 패턴

  • Data Transfer Object

    • 로직을 갖지 않은 순수한 데이터 객체
    • JavaBeans 형태로 작성
  • JavaBeans 규약

    • 멤버 변수는 private 접근 제한자 사용
    • 멤버 변수에 접근하기 위한 getter, setter 지정
    • 객체 생성을 위한 기본 생성자 필수

DAO

  • DBUtil : DB 접속 및 Connection과 관련된 공통 기능 제공

    • 개발 | 운용 으로 설정이 수시로 변경될 수 있다.
    • Connection 획득, 리소스 반납
  • DAO : Data Access Object : 데이터(DB)에 접근을 목적으로 하는 객체

Statement

  • DB에 SQL문장을 전달하는 객체

  • Connection으로부터 생성

  • 주요 메서드

public ResultSet executeQuery(String sql) : SQL SELECT문 실행 시 사용
public int executeUpdate(String sql) : update/delete/insert 문 실행 시 사용, int는 쿼리 결과로 영향받은 행의 개수
public void close()
사용 후 리소스 반납

profile
만반잘부

0개의 댓글