JavaTM Platform
Standard Ed. 6

패키지 javax.sql

서버측의 데이터 소스 액세스와 JavaTM 프로그램 언어를 사용한 처리에 사용하는 API 를 제공합니다.

참조처:
          설명

인터페이스의 개요
CommonDataSource DataSource,XADataSource, 및 ConnectionPoolDataSource 에 공통의 메소드를 정의하는 인터페이스입니다.
ConnectionEventListener PooledConnection 객체에 의해 생성된 이벤트가 통지되도록(듯이) 등록하는 객체입니다.
ConnectionPoolDataSource PooledConnection 객체의 팩토리입니다.
DataSource DataSource 객체가 나타내는 물리 데이터 소스에의 접속에 대한 팩토리입니다.
PooledConnection 접속 풀 관리의 훅을 제공하는 객체입니다.
RowSet JavaBeansTM 컴퍼넌트 모델의 JDBC API 로 지원되게 된 인터페이스입니다.
RowSetInternal RowSet 객체가 자신을 RowSetReader 객체나 RowSetWriter 객체에 건네주기 위해서(때문에) 구현하는 인터페이스입니다.
RowSetListener RowSet 객체의 유효기간중에 중요한 이벤트가 발생했을 때에 통지를 희망하는 컴퍼넌트에 의해 구현되고 있는 인터페이스입니다.
RowSetMetaData RowSet 객체의 열에 관한 정보를 포함하는 객체입니다.
RowSetReader 절단 된 RowSet 객체가, 열데이터 첨부로 자기 자신을 생성하기 위해서 호출하는 기능입니다.
RowSetWriter RowSetWriter 인터페이스를 구현하는 객체로, 「라이터」라고 불립니다.
StatementEventListener Statement 풀내의 PreparedStatement 로 발생한 이벤트의 통지를 받도록(듯이) 등록되어 있는 객체입니다.
XAConnection 분산 트랜잭션(transaction)를 지원하는 객체입니다.
XADataSource 내부에서 사용되는 XAConnection 객체의 팩토리입니다.
 

클래스의 개요
ConnectionEvent 접속 관련의 이벤트의 소스에 관한 정보를 제공하는 Event 객체입니다.
RowSetEvent RowSet 객체에 이벤트가 발생했을 때에 생성되는 Event 객체입니다.
StatementEvent PooledConnection 에 등록된 모든 StatementEventListener 에,StatementEvent 가 송신됩니다.
 

패키지 javax.sql 의 설명

서버측의 데이터 소스 액세스와 JavaTM 프로그램 언어를 사용한 처리에 사용하는 API 를 제공합니다. 이 패키지는 java.sql 패키지의 추가이며, 버젼 1.4 이후의 Java Platform, Standard Edition (Java SETM)에 포함되어 있습니다. Java Platform, Enterprise Edition (Java EETM)에서는, 계속 주요 부분으로서 다루어집니다.

java.sql 패키지는, 다음의 API 를 제공합니다.

  1. 데이터 소스와의 접속을 확립하기 위한 ,DriverManager 의 대체가 되는 DataSource 인터페이스
  2. 접속 풀과 문장의 풀
  3. 분산 트랜잭션(transaction)
  4. 행 세트

어플리케이션에서는 DataSource API 와 RowSet API 를 직접 사용합니다만, 접속 풀 API 와 분산 트랜잭션(transaction) API 는 중간층 인프라스트럭쳐(infrastructure)에 의해 내부적으로 사용됩니다.

DataSource 객체를 사용한 접속의 확립

javax.sql 패키지에서는, 데이터 소스와의 접속을 확립하기 위한 최적인 방법을 제공하고 있습니다. 원의 기구인 DriverManager 클래스도 여전히 유효하고, 이 클래스를 사용한 코드도 계속해 실행할 수 있습니다. 다만,DriverManager 기구보다 많은 이점이 있기 (위해)때문에, 새로운 DataSource 기구를 사용하는 것을 추천 합니다.

접속을 확립할 때에 DataSource 를 사용하는 주된 이점을 듭니다.

드라이버의 벤더는 DataSource 의 구현을 제공합니다. 특정의 DataSource 객체는, 특정의 물리 데이터 소스를 나타냅니다. DataSource 객체가 작성하는 각 접속은, 그 물리 데이터 소스에의 접속이 됩니다.

데이터 소스의 논리명은, 일반적으로은 시스템 관리 책임자나 시스템 관리 책임자의 작업을 실시하는 사용자에 의해, Java Naming and Directory InterfaceTM (JNDI) API 를 사용하는 네임 서비스에 등록됩니다. 어플리케이션에서는, 등록되어 있는 논리명을 검색해, 필요한 DataSource 객체를 가져옵니다. 그리고, 취득한 DataSource 객체를 사용해, 이 객체가 나타내는 물리 데이터 소스에의 접속을 작성합니다.

DataSource 객체가 작성한 접속을 풀 해, 재사용하기 위해(때문에), 이 객체를, 중간층 인프라스트럭쳐(infrastructure)와 제휴해 동작하도록(듯이) 구현할 수가 있습니다. 이러한 DataSource 구현을 사용하는 어플리케이션은, 자동적으로, 접속 풀에 있는 접속을 가져옵니다. DataSource 객체가 작성한 접속을, 특별한 코딩을 하지 않고 분산 트랜잭션(transaction)로 사용하고 싶은 경우도, 이 객체를, 중간 인프라스트럭쳐(infrastructure)와 제휴해 동작하도록(듯이) 구현합니다.

접속 풀과 문장의 풀

중간층 접속 풀 관리 프로그램으로 동작하도록(듯이) 구현된 DataSource 객체에 의해 작성된 접속은, 접속 풀에 추가됩니다. 새로운 접속의 작성은 매우 부하가 큰 작업이기 (위해)때문에, 이것에 의해 퍼포먼스가 비약적으로 향상합니다. 접속 풀에서는, 접속의 이용 및 재사용이 가능합니다. 그 때문에, 작성할 필요가 있는 신규 접속의 수는 큰폭으로 삭감됩니다.

접속 풀은 완전하게 투과적입니다. Java EE 의 구성의 중간층으로 자동적으로 행해져 어플리케이션의 관점으로부터는, 코드를 변경할 필요는 없습니다. 어플리케이션에서는 단지 DataSource.getConnection 메소드를 사용해 풀 된 접속을 취득해,Connection 객체를 사용하는 것과 같은 방법으로 사용합니다.

접속 풀에 사용되는 클래스와 인터페이스는 다음과 같습니다.

접속 풀 관리 프로그램은 3 층 아키텍쳐(architecture)의 중간층으로 기능해, 이러한 클래스나 인터페이스를 배후에서 사용합니다. PooledConnection 객체를 작성하기 위해서 ConnectionPoolDataSource 객체가 불려 가면(자), 접속 풀 관리 프로그램에 의해 새로운 PooledConnection 객체가 ConnectionEventListener 객체로서 등록됩니다. 접속이 종료하는지, 에러가 발생했을 경우, 접속 풀 관리 프로그램 (청취자)은,ConnectionEvent 객체를 포함한 통지를 받습니다.

접속 풀 관리 프로그램이 PreparedStatements 용으로서 Statement 의 풀을 지원하는 경우 (지원할지 어떨지는,DatabaseMetaData.supportsStatementPooling 메소드를 호출하는 것으로 판단 가능), 접속 풀 관리 프로그램은, 자신을 StatementEventListener 객체로서 새로운 PooledConnection 객체에 등록합니다. PreparedStatement 가 닫는지, 에러가 발생했을 경우, 접속 풀 관리 프로그램 (청취자)은,StatementEvent 객체를 포함한 통지를 받습니다.

분산 트랜잭션(transaction)

풀 된 접속과 같이, 중간층 인프라스트럭쳐(infrastructure)로 동작하도록(듯이) 구현된 DataSource 객체에 의해 작성된 접속도, 분산 트랜잭션(transaction)에 참가하는 일이 있습니다. 이것에 의해, 어플리케이션은, 단일 트랜잭션(transaction)로 복수 서버상의 데이터 소스에 액세스 할 수 있게 됩니다.

분산 트랜잭션(transaction)에 사용되는 클래스와 인터페이스는 다음과 같습니다.

이러한 인터페이스는 트랜잭션(transaction) 매니저에 의해 사용되어 어플리케이션이 직접 사용할 것은 없습니다.

XAConnection 인터페이스는 PooledConnection 인터페이스로부터 파생하고 있기 (위해)때문에, 풀 된 접속에 적용되는 것은, 분산 트랜잭션(transaction)를 구성하는 접속에도 적용됩니다. 중간층의 트랜잭션(transaction) 매니저는, 모든 처리를 투과적으로 실시합니다. 어플리케이션 코드의 유일한 변경점은, 어플리케이션이 트랜잭션(transaction) 매니저의 트랜잭션(transaction) 처리를 방해할 수 없게 된 것입니다. 특히, 어플리케이션은,Connection.commit 메소드나 Connection.rollback 메소드를 호출할 수가 없습니다. 또, 접속을 자동 위탁 모드로 설정할 수도 있습니다. 즉,Connection.setAutoCommit(true) 를 호출할 수 없습니다.

어플리케이션은, 특별한 처리를 실시하는 일 없이 분산 트랜잭션(transaction)에 참가할 수 있습니다. 일반적으로 대로,DataSource.getConnection 메소드를 사용해, 사용하는 데이터 소스에의 접속을 작성하는 것만으로 끝납니다. 트랜잭션(transaction) 매니저는, 트랜잭션(transaction)를 배후에서 관리합니다. XADataSource 인터페이스는 XAConnection 객체를 작성해, 각 XAConnection 객체는 트랜잭션(transaction) 매니저가 접속을 관리하기 위해서 사용하는 XAResource 객체를 작성합니다.

행 세트

RowSet 인터페이스는, 다른 다양한 클래스나 인터페이스와 함께 배후에서 동작합니다. 이러한 클래스나 인터페이스는 3 개의 카테고리로 나눌 수 있습니다.
  1. 이벤트의 통지

  2. 메타데이타
  3. 리더/라이터 기능
    RowSetInternal 인터페이스를 구현하는 RowSet 객체는, 관련하는 RowSetReader 객체를 호출하는 것으로, 자신에게 데이터를 읽어들일 수가 있습니다. 또, 관련하는 RowSetWriter 를 호출해, 행에 가세한 변경을, 데이터를 취득한 장소로부터 데이터 소스에 써 되돌릴 수가 있습니다. 계속 데이터 소스에 접속되고 있는 행 세트는, 데이터 소스상에서 직접 동작하므로, 리더나 라이터를 사용할 필요는 없습니다.

RowSet 인터페이스는 많은 방법으로 구현할 수 있어 누구나가 구현을 작성할 수 있습니다. 개발자는 자유롭게 상상력을 일하게 해 행 세트의 새로운 사용 방법을 찾아내는 것이 추천 되고 있습니다.

중요: 「도입된 버젼: 1.6」(이)라고 표시된 API 를 사용하는 코드는, JDBC 4.0 API 를 구현하는 JDBC 테크놀러지 드라이버를 사용해 실행할 필요가 있습니다. 사용하는 특정의 기능이 드라이버에 구현되고 있는지 어떤지를, 드라이버의 문서로 확인해 주세요.

패키지의 스펙

관련 문서

Addison-Wesley Longman 로부터 출판되고 있는 Java Series 북에서는,javax.sql 패키지의 클래스나 인터페이스에 관한 상세한 정보를 참조할 수 있습니다.

도입된 버젼:
1.4

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.