080722--3-
<< JDBC 프로그램밍 순서 >>
<1> Driver 를 메모리에 로딩(DriverManager) (구형방식 old type)
<2> DB 와 연결(Connection 객체생성)
<3> SQL 구문(쿼리) DBMS로 전송
(Statement 객체생성)
<4> 쿼리 실행 (ResultSet 객체 생성 혹은 결과값 받음)
<5> ResultSet 객체에서 원하는 값을 추출
(select 쿼리일경우)
<6> 사용한 객체들을 닫아준다.(close()IO개념)
jdbc 커넥션 방식이... driver regist 하는 방식을 해봤다.
또다른 방식을 사용해보자...
oracle api 문서의 oracle.jdbc.pool 페키지의 OracleDataSource 클래스를 찾아가자.
이걸 사용할 꺼다.
앞에서는 DriverManager 를 사용했는데...
여기서는 OracleDataSource 를 사용한다.
080722--4-
<<Connection 생성 두가지 방법>>
<1> DriverManager : (구형)
Class.forName 으로 driver 의 객체를 만들면 그객체가 자동으로 DriverManager 등록된다
<2> DataSource :
JNDI lookup을 일반적으로 사용하나 물론 사용하지 않을수 있다
## JNDI: Java Naming and Directory Interface
특정한 이름으로 시스템의 특정 리소스나 객체에 접근 가능하게 해주는 기술
DataSource 같은 경우 확장된기능들을 지원한다.
(ex. connection pooling)
<< Connection Pooling >>
일반적으로 Connection 을 생성하는 일이 많아질 경우
(DB에 접속이 많아질경우)DB에 과부하가 심해진다.
그러한 과부하를 줄여보고자 Connection 을 미리
만들어 놓고 그것을 필요에 따라서 내어주고 돌려받는 방식
---------------------------------------------------------------------------------------------------------------------
Connection Pool
이런 방식을 사용하면 과부하가 엄청나게 줄어든다.
보통 서버 한대에10000대가 붙을 수 있다고 하는데....
connection pool 을 사용했을때 실제로는 3000대가 붙을 수 있다고한다.
사용하지 않을때는 100대도 버겁다고 한다.
connection pooling 이 왜 효율적이냐?
우리가 실제로 connection 을 쓰는 시간은 굉장히 짧다.
(쿼리를 날려 결과값이 반환되는 시간... 1초도 안된다.)
그러나 connection 을 새로 만드는 시간은 오래걸린다.
때문에 미리 connection을 만들어놓고 쓴다.
보통은 15개정도 미리 만들어놓고 쓴다.
미리 만들어놓은 connection 을 다 내어줬는데 요청이 들어왔다면?
알아서 새로 만든다.
그러다 요청이 줄어들면 알아서 나머지 connection 을 없애버린다.
(사용하지 않는 connection이 많은것도 부하다)
자동으로...
예전에는 프로그래머들이 직접 connection pool 을 만들어 썼는데 요즘에는 잘만들어진게 많으니까
그냥 가져다 쓴다.
대표적인것이 우리가 사용할 OracleDataSource 이다.
이러한 이유 때문에라도 DriverManager 방식보다 DataSource 방식이 권장된다.
---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
JNDI
이름표를 붙여서 서버에 올린다. 무엇에나 가능. 그러고 다른 곳에서 그 이름을 가져다 쓴다.
---------------------------------------------------------------------------------------------------------------------
"JDBC" 카테고리의 다른 글
- 1. Connection (댓글 0개 / 트랙백 0개) 2008/07/22
- JDBC - 08 - 쿼리 분석기를 만들어보자 (2) - ResultSetMetaDa... (댓글 0개 / 트랙백 0개) 2008/12/08
- JDBC - 04 - 커넥션 연결 (3) OracleDataSource (댓글 0개 / 트랙백 0개) 2008/12/01
- JDBC - 03 - 커넥션 연결 (2) DriverManager (댓글 0개 / 트랙백 0개) 2008/12/01
- JDBC 정리 (계속 업데이트) (댓글 0개 / 트랙백 0개) 2008/07/22
- JDBC - 02 - 커넥션 연결 (1) DriverManager (댓글 0개 / 트랙백 0개) 2008/12/01
- JDBC - 07 - 쿼리 분석기를 만들어보자 (1) - ResultSetMetaDa... (댓글 0개 / 트랙백 0개) 2008/12/08
- JDBC - 05 - JDBC 의 기본적인 틀 / ResultSet (댓글 0개 / 트랙백 0개) 2008/12/02
- JDBC - 06 - DML 문장을 날려보자 (1) insert, update (댓글 0개 / 트랙백 0개) 2008/12/03
- 1. Connection (댓글 0개 / 트랙백 0개) 1970/01/01



댓글을 달아 주세요