노무현 대통령 배너

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 클래스를 찾아가자.

이걸 사용할 꺼다.

사용자 지정 2dd

앞에서는 DriverManager 를 사용했는데...

여기서는 OracleDataSource 를 사용한다.


사용자 지정 3



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

Untitled-1

이런 방식을 사용하면 과부하가 엄청나게 줄어든다.

보통 서버 한대에10000대가 붙을 수 있다고 하는데....

connection pool 을 사용했을때 실제로는 3000대가 붙을 수 있다고한다.

사용하지 않을때는 100대도 버겁다고 한다.


connection pooling 이 왜 효율적이냐?

우리가 실제로 connection 을 쓰는 시간은 굉장히 짧다.

(쿼리를 날려 결과값이 반환되는 시간... 1초도 안된다.)

그러나 connection 을 새로 만드는 시간은 오래걸린다.

때문에 미리 connection을 만들어놓고 쓴다.

보통은 15개정도 미리 만들어놓고 쓴다.


미리 만들어놓은 connection 을 다 내어줬는데 요청이 들어왔다면?

알아서 새로 만든다.

그러다 요청이 줄어들면 알아서 나머지 connection 을 없애버린다.

(사용하지 않는 connection이 많은것도 부하다)

자동으로...


예전에는 프로그래머들이 직접 connection pool 을 만들어 썼는데 요즘에는 잘만들어진게 많으니까

그냥 가져다 쓴다.

대표적인것이 우리가 사용할 OracleDataSource 이다.

이러한 이유 때문에라도 DriverManager 방식보다 DataSource 방식이 권장된다.

---------------------------------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------------------------------

JNDI

이름표를 붙여서 서버에 올린다. 무엇에나 가능. 그러고 다른 곳에서 그 이름을 가져다 쓴다.

---------------------------------------------------------------------------------------------------------------------

크리에이티브 커먼즈 라이센스
Creative Commons License

"JDBC" 카테고리의 다른 글


이 글의 관련글
2008/12/01 10:28 2008/12/01 10:28

트랙백을 보내세요

트랙백 주소 :: http://pippen80.cafe24.com/trackback/129

댓글을 달아 주세요

[로그인][오픈아이디란?]
비밀글 (Serect)
댓글 달기 (Submit)