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
- 원본 데이터에 변화를 주지 않는 명령문을 실행할 때 사용함
- 리턴 값은 Result Set
- select 등
- executeQuery
- 원본 데이터에 변화를 주는 명령문을 실행할 때 사용함
- 리턴 값은 int
- insert, update, delete 등
Result Set
- executeQuery를 통해 쿼리를 실행하여 받은 result set을 담은 객체
- next
- 가지고 올 데이터가 있는지 확인하고 boolean형 반환
- 호출될 때마다 레코드를 확인함(한 줄 한 줄)
- 확인하고 있는 레코드에 담긴 컬럼별 데이터들을 getInt, getString 등으로 가지고 와서 사용함
PreparedStatement
- 문자열 조립
- insert 할 때 쿼리문에 넣을 변수들의 조립을 도와주는 기능이 있음
- 쿼리 작성할 때 변수들을 넣을 위치에 물음표를 넣어 줌
- 물음표에 값을 채워 줌
- 높은 보안성
- SQL injection 공격을 막아 줌(값에 포함되어 있는 싱글 쿼터를 없애기 등)
- 높은 성능
Commit
- 트랜잭션에 담긴 쿼리를 DBMS로 적용시킴
Close
- 접속 인원에 제한이 있기 때문에 사용 후 sql 연결을 끊어 줘야 함
Close() 이슈
- 예외가 발생하는 즉시 try-catch로 넘어감
- 그 뒤에 작성한 close()가 실행이 안 됨
- 연결 인원 꽉 차서 실행 안 됨
- 해결법
- Finally: 예외 발생 여부에 상관없이 실행하는 코드 부분, try-catch 바깥 부분 코드는 해당 X
- Try with resource: 소괄호 안에 close() 해야 할 것들을 넣어 줌, 변수에 담는 것까지 포함해서 작성해야 함