OJDBC

  • Oracle Java Database Connection
  • JVM의 시스템과 DB 시스템을 연결하고 통신하기 위한 라이브러리
  • 자바 내장 라이브러리가 아님
  • 파일명 뒤에 번호는 PC에 설치된 JDK 버전과 관련 있음

 

DBMS Driver Loading

  • SQL 파일들 동작하기 위한 코어(class 정보 등)를 로딩하는 것
  • JDBC Driver: DBMS와 통신을 담당하는 자바 클래스로 DBMS마다 별도의 JDBC 드라이버가 필요함
  • 사용할 클래스들은 내장 라이브러리이지만 JDBC 드라이버는 외부 라이브러리를 사용해야 함
  • 오라클을 쓰면 Oracle Driver, MySql을 사용하면 MySql Driver를 활성화하는 것임
  • 이 로딩 과정을 통해 DBMS에 맞는 드라이버의 인스턴스를 활성화함

 

Connection

  • DBMS의 계정을 선택하여 연결 시도하는 것
  • DB가 있는 서버의 IP, 특정 계정의 아이디와 패스워드 필요함

 

WorkSheet

  • 쿼리를 작성하고 실행시키기 위한 객체
  • Connection에서 WorkSheet를 제공함
  • 객체(user, table 등)을 조작하는 DDL과 같은 쿼리는 자바 프로그램에서 하지 않음
  • 자바에서 DBMS와 연결하여 실행하는 쿼리는 DML 위주임
  • executeUpdate
    1. 원본 데이터에 변화를 주지 않는 명령문을 실행할 때 사용함
    2. 리턴 값은 Result Set
    3. select 등
  • executeQuery
    1. 원본 데이터에 변화를 주는 명령문을 실행할 때 사용함
    2. 리턴 값은 int
    3. insert, update, delete 등

 

Result Set

  • executeQuery를 통해 쿼리를 실행하여 받은 result set을 담은 객체
  • next
    1. 가지고 올 데이터가 있는지 확인하고 boolean형 반환
    2. 호출될 때마다 레코드를 확인함(한 줄 한 줄)
    3. 확인하고 있는 레코드에 담긴 컬럼별 데이터들을 getInt, getString 등으로 가지고 와서 사용함

PreparedStatement

  • 문자열 조립
    1. insert 할 때 쿼리문에 넣을 변수들의 조립을 도와주는 기능이 있음
    2. 쿼리 작성할 때 변수들을 넣을 위치에 물음표를 넣어 줌
    3. 물음표에 값을 채워 줌
  • 높은 보안성
    1. SQL injection 공격을 막아 줌(값에 포함되어 있는 싱글 쿼터를 없애기 등)
  • 높은 성능

 

Commit

  • 트랜잭션에 담긴 쿼리를 DBMS로 적용시킴

Close

  • 접속 인원에 제한이 있기 때문에 사용 후 sql 연결을 끊어 줘야 함

 

Close() 이슈

  • 예외가 발생하는 즉시 try-catch로 넘어감
  • 그 뒤에 작성한 close()가 실행이 안 됨
  • 연결 인원 꽉 차서 실행 안 됨
  • 해결법
    1. Finally: 예외 발생 여부에 상관없이 실행하는 코드 부분, try-catch 바깥 부분 코드는 해당 X
    2. Try with resource: 소괄호 안에 close() 해야 할 것들을 넣어 줌, 변수에 담는 것까지 포함해서 작성해야 함

+ Recent posts