Web
9 Jun 2020

DataSource

해당 게시글은 웹을 공부하기 위해 개인적으로 기록했던 자료입니다.

DriverManager


DriverManager방식은 java.sql패키지의 DriverManager클래스를 이용하는 방법으로써 JDBC드라이버를 관리하는 가장 기초적인 방법입니다. jdbc.drivers 시스템 속성은 시스템은 : 을 기준으로 만들어진 jdbc.drivers들의 fQCN(Full Qualified Class Name)을 가지고 있는데 각각의 드라이버는 system class loader에 의해서 로드됩니다.

DriverManager에 getConnection메소드를 사용하면 DriverManager는 초기화할 때 로드된 드라이버와 현재 애플리케이션과 동일한 클래스 로더를 사용하여 명시적으로 로드된 드라이버 중에서 적합한 드라이버를 찾으려고 시도한다.

이 방식은 데이터베이스와 연결된 Business Logic을 실행할 때 Logic 하나하나마다 Connection을 만드는 방식이기 때문에 시스템의 성능과 안전성에 영향을 지속적으로 줍니다. 그리고 서버상에서 각각의 Connection 객체를 위해 자원이 낭비되고 있겠죠.

DataSource


DB와 Connection을 행할 때 DataSource방식을 쓰는 것이 더 좋습니다. API도 DriverManager보다 DataSource를 쓰는 것이 선호된다고 명시합니다.

javax.sql package

javaSql

javax.sql package는 다음의 네가지 특징을 제공합니다.

  • DataSource interface

  • Connection pooling, Statement pooling

  • Distributed transaction

  • Rowsets

Connection pooling, Statement pooling, Distributed transaction은 middle tier infra에서 사용되는데 DriverManager는 제공하지 않습니다.

javax.sql.DataSource

DataSourceInterface

DataSource방식은 javax.sql패키지 안에 있는 DataSource 인터페이스를 이용하는 방법으로서 이 인터페이스는 물리적인 Data source를 연결하기 위한 Factory입니다.

DataSource인터페이스를 상속하는 객체는 보통 JNDI(Java Naming and Directory API)기반의 네이밍 서비스에 의해 등록됩니다. 이 객체는 특정한 물리적 data source를 나타내게 됩니다.

DataSource방식은 이 data source의 속성값만(JNDI기반 Context의 속성) 변경해주면 되기 때문에 data source나 driver가 바뀌어도 소프트웨어의 코드를 건드릴 필요가 없어서 유지보수가 용이합니다.

그리고 이 객체로 connection을 얻을 때 해당 물리적 data source의 connection을 얻게 됩니다. 그리고 connection들은 추후에 middle tier infrastructure에서 재사용되기 위해 pooling 공간에 모이게 됩니다.(pooled 라고 표현이 돼있습니다.)

JNDI???


JNDI기반의 네이밍 서비스에 의해 등록된다는 말을 정확히 보려면 javax.naming이라는 패키지를 봐야합니다.

javaxNamingPakage

DataSource Interface로 인스턴스를 만들면서 Resource Factory를 등록시킬 때 Naming Source라는 걸쓰는데 xml에다가 Resource Factory를 등록한다.

여기서 는 클래스르릉 의미.

JNDI는 내부적으로 해시태이블로 만들어져있ek. jdbc/mysql : 리소스의 주소값으로. . . .

Context ic = new InitialContext();

was에 제품으로 등록된 Data Source

대규모 프로그램이 어떻게 이루어지는지. . . . .

external resouces….

servlet context

  1. attribute
  2. container 차원에서의 초기화기능.

두번째가 중요하다.

CGI 서버에서 돌아가는 프로그램을 전반적으로 말함.

컴퍼넌트 분

결과페이지는 태그 중심.

application session request…


Tags:
0 comments