티스토리 뷰
<JDBC> Java DataBase Connectivity
- java.sql 패키지사용
관련클래스) 1 클래스 2-5 인터페이스
1. DriverManger
- JVM에서 JDBC전체를 관리하는 class
(Driver등록, Connection연결작업)
2. Driver
- DB를 만드는 Vendor(Oracle, MS-SQL, MySQL...)를
implements하여 자신들의 DB를 연결할 수 있는 class를 만드는 interface.
3. Connection
- DB와 연결성을 가지고 있는 interface.
4. Statement
- 실제 SQL문을 사용하기 위하여 Connection으로 부터 받아내는 interface.
5. ResultSet
- Statement를 통하여 select문을 실행하였을 때
그 결과 Data를 가지고 있는 interface.
<JDBC Programming>
1. Driver loading
2. DB와 연결하여 Connection 객체얻기
3. Connection으로 부터 Statement 객체얻기
4. Statement의 API를 이용하여 SQL실행
5. SQL을 실행한 후 결과인 ResultSet객체 얻기
6. ResultSet에 있는 결과 자료를 loop를 이용하여 처리.
1. 드라이버로딩 Driver loading
(제품군 선택 - 어떠한 RDBMS를 사용할지)
-Oracle경우
Class.forName("oracle.jdbc.driver.OracleDriver");
-MySQL경우
Class.forName("org.gjt.mm.mysql.Driver");
-MS-SQL경우
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2. 연결객체생성
Connection conn = DriverManager.getConnection(ip,port,sid,user,pass);
3. Statement 객체 생성
- SQL문을 실행할 메소드가 포함되어 있음.
Statement stmt = conn.createStatement();
실행메소드)
stmt.executeUpdate("DML문");
stmt.executeQuery("DQL문");
4. ResultSet 객체생성
결과 집합
ResultSet rs = stmt.executeQuery("DQL문");
ResultSet: 결과집합이 저장됨(행열데이터)
rs.next(): 결과집합에서 한 행을 얻어옴. (리턴값 true|false)
rs.get자료형(컬럼명 또는 컬럼인덱스): next를 통해 얻어온 행에서 열데이터를 얻는 역할.
String
int
date
===================================================================================
Statement (java.sql.Statement)
Statement에서는 executeQuery(),excecuteUpdate()메소드를 실행하는
시점에 파라미터로 SQL문을 DB에 전달한다.
장점 : 사용돈 SQL문 전체를 명확히 알 수 가 있어서 디버깅이 쉽다.
단점 : 조건값이 틀린 많은 수의 SQL문을 반복 실행하게 되는 경우, DB서버에서 모두 새롭게 PARSING
되어야 하므로 부하가 생길수 있다.
-------------------------------------------------------------------
PreparedStatement(java.sql.PreparedStatement)
PerparedStatement는 커넥션에서 생성하면서 SQL문이 DB에 전송되어진다.
Statement클래스를 상속하고 있음
장점
- bind변수를 사용하여 DB서버에서 파싱된 SQL을 재사용하게 만듦으로, 반복적인 다량의 SQL수행시
성능상 이득이 있다.
- 반복 루프를 통해서 하나의 SQL문에 변수값만 입력하며 반복 실행 할 수 있음.
- SQL injection예방의 방법이 될 수 있다.
단점
- 오류발생 시, 변수에 입력되는 값을 알 수 없어서 디버깅이 어렵다.
- bind변수에 어떤값이 들어올지 알 수 없으므로, DB서버에서 비효율적인 exception plan이 선택될 수
있다.
'휴지통 > Java' 카테고리의 다른 글
자바 (0) | 2013.05.27 |
---|---|
자바 기초 (0) | 2013.05.27 |
Client Test (0) | 2013.03.11 |
Client (0) | 2013.03.11 |
Server Test (0) | 2013.03.11 |