JDBC-ODBC Bridge Driver - Windows에서만 사용할 수 있는 Driver - DBMS와 연동은 OS에서 설정하고, Java에서 연결 - 거치는 단계가 많으므로 속도가 느림 - Java는 windows에서 서비스 잘 안함 => 사용 안함
Native Driver - Driver를 제작한 언어가 Java와 다른 언어로 된 Driver - 빠른 성능과 안정성을 제공 - Driver를 사용하기 위해서 별도의 프로그램 설치 필요 - Middleware에서 주로 사용
Netwrok Protocol Driver - applet에서 DBMS와 연동하기 위한 Driver
Native Protocol Driver(ojdbc8.jar) - JDBC에서 가장 많이 사용하는 Driver - Native Driver를 기반?하기 때문에 빠른 성능과 안정성을 제공 - Driver를 제작한 언어가 Java임 - 자바프로그램에서 데이터를 주고 받을 때 문제가 거의 발생하지 않음.
JDBC 개발에 사용되는 객체들
- java.lang.Class : DB vender사에서 제작하여 배포하는 Driver(ojdbc8.jar) 내 특정 클래스(OracleDriver.class)를 객체화하여 JVM에 instance로 올림
- java.sql.DriverManager : JVM에 로딩된 드라이버를 사용하여 DBMS와 연결
- java.sql.Connection : DBMS 연결 유지(commit(), close()), Transaction 처리, 쿼리문 생성객체 얻기
- java.sql.Statement : 쿼리문을 실행할 때마다 생성하여 처리(SQLInjection 공격에 취약)
- java.sql.PreparedStatement : 쿼리문을 미리 생성하고 값을 나중에 넣어서 실행(값이 들어가는 위치를 설정하는 bind 변수사용 필요)
- java.sql.CallableStatement : Procedure를 호출할 때 사용하는 객체(PL/SQL)
- java.sql.ResultSet : 조회 결과를 사용하기 위해 데이터형을 변환
- java.sql.ResultSetMetaData : DD가 없어도 테이블의 MetaData(컬럼명, 데이터형, 크기, null 허용여부) 정보를 얻을 때 사용
- java.sql.Types : Procedure에서 처리한 결과를 그 값을 임시로 저장하기 위해 사용하는 데이터 형을 가짐
- 바인드 변수 선언 : var 변수명 데이터형(크기) > 프로시저 실행 : exec 프로시저명(값, 바인드 변수명)
- Java에서는 Oracle에 bind 변수를 선언할 수 없기 때문에 그 일을 대신 해주는 Types 클래스 제공 - java.sql.Clob : 자바에서 Clob 데이터형을 처리
Class.forName("oracle.jdbc.OracleDriver");//예외처리 필요
//객체화 가능하지만 한개만 생성하여 관리하기 힘듬
OracleDriver od = new OracleDriver();//예외처리 필요없음
2. 커넥션 얻기(DriverManager, Connection)
String url = "jdbc:oracle:thin:@디비서버위치:포트:SID";
//디비서버위치(자신 컴퓨터) : Localhost, 127.0.0.1
//디비서버위치(다른 컴퓨터) : 해당 컴퓨터의 IP 주소
//포트 : 1521
//SID : orcl
String id ="아이디";
//SCOTT
String pass = "비밀번호";
//tiger
Connection con = DriverManager.getConnection(url, id, pass);//예외처리 필요
//DB서버에서 인증을 거쳐서 Connection 생성