![]() ![]() ![]() ![]() |
以下の節では、BEA WebLogic Type 4 JDBC Sybase ドライバのコンフィグレーション方法と使用方法について説明します。
Sybase 用の BEA WebLogic Type 4 JDBC ドライバ (「Sybase ドライバ」) は次のデータベース バージョンをサポートします。
注意 : | XA 接続は Sybase Adaptive Server Enterprise 12.0 以降のバージョンでのみサポートされます。XA 接続は Sybase Adaptive Server 11.5 および 11.9 ではサポートされません。 |
BEA WebLogic Type 4 JDBC Sybase ドライバのドライバ クラスは次のとおりです。
WebLogic Server ドメインに JDBC データ ソースをコンフィグレーションする場合に、これらのドライバ クラスを使用します。
Sybase データベースに接続するには、次の形式の URL を使用します。
jdbc:bea:sybase://
dbserver
:
port
表 7-1 に、Sybase ドライバでサポートされる JDBC 接続プロパティを示し、各プロパティについて説明します。WebLogic Server ドメインの JDBC データ ソースのコンフィグレーションでこれらの接続プロパティを使用できます。プロパティを指定するには、JDBC データ ソースのコンフィグレーションで次の形式を使用します。
property=value
注意 : | すべての接続文字列プロパティ名で、大文字と小文字は区別されません。たとえば、Password は password と同じです。各接続プロパティで示されているデータ型は、JDBC データ ソースのプロパティ値に使用される Java データ型です。 |
|
|
|
|
|
|
以下に示す Sybase ドライバの接続プロパティを設定すると、アプリケーションのパフォーマンスを向上させることができます。
ドライバは JDBC 3.0 に準拠したバッチ メカニズムまたは Sybase のネイティブ バッチ メカニズムを使用して、バッチ処理を実行できます。特に、パフォーマンスの負荷が大きいネットワークの往復が問題となっている場合、Sybase のネイティブ バッチ環境を使用するとパフォーマンスを向上させることができます。ネイティブ メカニズムを使用すると、バッチを実行してエラーが発生した場合、ドライバはバッチ内でエラーを引き起こした文を判別できません。また、バッチの中にストアド プロシージャを呼び出した文やトリガを実行した文が含まれる場合、各バッチ文またはパラメータ セットに対する複数の更新件数が生成されます。JDBC 3.0 に準拠したメカニズムでは、JDBC 3.0 仕様で求められているように、バッチ内の文やパラメータごとの更新件数が返されます。Sybase のネイティブ バッチ メカニズムを使用するには、このプロパティを true に設定してください。
スクロールインセンシティブな結果セットを使用する場合のパフォーマンスを向上させるため、ドライバは結果セット データをディスクに書き込む代わりに、メモリにキャッシュできます。デフォルトでは、ドライバはインセンシティブな結果セット データを 2 MB までメモリにキャッシュし、残りの結果セット データをディスクに書き込みます。パフォーマンスを向上させるには、ドライバがデータをディスクに書き込む前に使用するメモリの量を増やすか、ドライバがインセンシティブな結果セット データをディスクに書き込めないようにします。最大キャッシュ サイズの設定は 2 GB です。
ドライバがアプリケーション サーバの内部で実行されない場合、または独自の Prepared Statement プールを提供しない別のアプリケーションの内部で実行されるのでない場合は、パフォーマンスを向上させるため、ドライバ独自の内部的な Prepared Statement プールを有効にする必要があります。ドライバの内部的な Prepared Statement プールを有効にすると、ドライバはアプリケーションによって作成された一定数の Prepared Statement をキャッシュします。たとえば、MaxPooledStatements
が 20 に設定されている場合、ドライバはアプリケーションによって作成された最近の 20 個の Prepared Statement をキャッシュします。このプロパティの値に設定された値が、アプリケーションが使用する Prepared Statement の数より大きい場合は、すべての Prepared Statement がキャッシュされます。
アプリケーションが Prepared Statement を複数回実行する場合は、このプロパティを StoredProc
に設定するとパフォーマンスが向上します。これは、いったん作成されたストアド プロシージャは、単一の SQL 文よりも高速に実行できるためです。アプリケーションが Prepared Statement を複数回実行することがない場合は、このプロパティを Direct
に設定してください。この場合、ストアド プロシージャを作成するとパフォーマンスが低下します。これは、ストアド プロシージャによるサーバへの負荷が、単一の SQL 文を実行する場合よりも大きくなるためです。
デフォルトでは、ResultSetMetaData.getTableName()
メソッドが呼び出された場合、Sybase ドライバは、結果セット内の各カラムの正しいテーブル名を返すために必要な追加の処理を省略します。このため、getTableName()
メソッドは結果セット内のカラムごとに空の文字列を返す可能性があります。アプリケーションでテーブル名情報が必要ない場合は、この設定によって最適なパフォーマンスが得られます。ResultSet メタデータを返す方法の詳細については、「ResultSet メタデータのサポート」を参照してください。
表 7-2 では、Sybase ドライバでサポートされるデータ型と、それらが JDBC データ型へどのようにマップされるかを示します。
注意 : | SYBASE ADAPTIVE SERVER 12.5 以降を使用する場合、Sybase ドライバは character および binary のカラムでの XNL (extended new limits) をサポートします。長さが 255 を超えるカラムがサポートされます。character および binary のカラムにおける XNL の詳細については、Sybase のマニュアルを参照してください。 |
データ型の詳細については、「getTypeInfo」を参照してください。
Sybase ドライバでサポートされている SQL エスケープ シーケンスについては、「JDBC の SQL エスケープ シーケンス」を参照してください。
Sybase ドライバは、トランザクション アイソレーション レベルとして Read Committed
、Read Uncommitted
、Repeatable Read
、および Serializable
をサポートしています。デフォルトは Read Committed
です。
Sybase ドライバは、ID カラムを持つテーブルから結果セットが返される場合にのみ、スクロールセンシティブな結果セットをサポートします。Sybase ドライバでも、スクロールインセンシティブな結果セット、および更新可能な結果セットをサポートしています。
注意 : | Sybase ドライバが、要求された結果セットのタイプまたは同時実行性をサポートできない場合は、カーソルを自動的にダウングレードして詳細情報の入った SQLWarning を生成します。 |
Sybase では Blob
または Clob
データ型は定義されていませんが、Sybase ドライバによって、Blob および Clob 用に設計された JDBC メソッドを使用して長いデータの LONGVARBINARY
および LONGVARCHAR
データを取得および更新できます。これらのメソッドを使用して長いデータを Blob
または Clob
として更新すると、更新は Blob または Clob オブジェクト内のデータのローカル コピーに対して行われます。
Blob および Clob 用の JDBC メソッドを使用して長いデータを取得および更新すると、Blob および Clob を操作した場合と同じメリットが得られます。たとえば Blob および Clob を使用した場合、
Blob および Clob を使用した場合のこうしたメリットを得るには、データをキャッシュする必要があります。データをキャッシュするので、特に一度にデータの逐次読み出しを行う場合に、パフォーマンスが低下します。長いデータのサイズが使用可能なメモリよりも大きいと、パフォーマンスが著しく低下することがあります。
Sybase ドライバは次のバッチ メカニズムを提供します。
Sybase のネイティブのバッチ メカニズムを使用するには、BatchPerformanceWorkaround
接続プロパティを true に設定します。接続プロパティの指定の詳細については、「Sybase 接続プロパティ」を参照してください。
Sybase ドライバは、あらゆるタイプの SQL 文のパラメータ メタデータを返すことができます。
アプリケーションでテーブル名情報が必要な場合、Sybase ドライバは Select 文の ResultSet メタデータに含めてテーブル名情報を返すことができます。ResultSetMetaDataOptions
プロパティを 1 に設定した場合、ResultSetMetaData.getTableName()
メソッドが呼び出されたとき、Sybase ドライバは結果セット内の各カラムの正しいテーブル名を決定する追加の処理を実行します。それ以外の場合、getTableName()
メソッドは結果セット内のカラムごとに空の文字列を返す可能性があります。
ResultSetMetaDataOptions
プロパティが 1 に設定されていて、ResultSetMetaData.getTableName()
メソッドが呼び出された場合、Sybase ドライバが返すテーブル名情報は、結果セット内のカラムがデータベース テーブル内のカラムにマップされているかどうかによって異なります。結果セット内の各カラムがデータベース テーブル内のカラムにマップされている場合、Sybase ドライバはそのカラムに関連付けられているテーブル名を返します。結果セット内の各カラムがテーブル内のカラムにマップされていない場合 (集約やリテラルなど)、Sybase ドライバは空の文字列を返します。
ResultSet メタデータが返される Select 文には、エリアス、結合、および完全修飾名を含めることができます。以下のクエリは、ResultSetMetaData.getTableName()
メソッドによって Select リスト内の各カラムの正しいテーブル名が返される、Select
文の例です。
SELECT id, name FROM Employee
SELECT E.id, E.name FROM Employee E
SELECT E.id, E.name AS EmployeeName FROM Employee E
SELECT E.id, E.name, I.location, I.phone FROM Employee E,
EmployeeInfo I WHERE E.id = I.id
SELECT id, name, location, phone FROM Employee,
EmployeeInfo WHERE id = empId
SELECT Employee.id, Employee.name, EmployeeInfo.location,
EmployeeInfo.phone FROM Employee, EmployeeInfo
WHERE Employee.id = EmployeeInfo.id
生成されたカラムの場合、ドライバによって返されるテーブル名は空の文字列です。以下のクエリは、生成されたカラム (「upper」という名前のカラム) を含む結果セットを返す Select 文の例です。
SELECT E.id, E.name as EmployeeName, {fn UCASE(E.name)}
AS upper FROM Employee E
Sybase ドライバは、ResultSetMetaData.getSchemaName()
メソッドと ResultSetMetaData.getCatalogName()
メソッドが呼び出された場合、スキーマ名とカタログ名の情報を返すこともできます (ドライバがこの情報を判別できる場合)。たとえば、以下の文の場合、Sybase ドライバはカタログ名として「test」、スキーマ名として「test1」、テーブル名として「foo」を返します。
SELECT * FROM test.test1.foo
テーブル名、スキーマ名、およびカタログ名の情報を返すために必要な追加の処理は、ResultSetMetaData.getTableName()
、ResultSetMetaData.getSchemaName()
、または ResultSetMetaData.getCatalogName()
メソッドが呼び出された場合にのみ実行されます。
Sybase ドライバは、以下のような RowSet インタフェースの JSR 114 実装をサポートします。
JSR 114 の詳細については、 http://www.jcp.org/en/jsr/detail?id=114 を参照してください。
Sybase ドライバは自動生成キーの値の取得をサポートします。Sybase ドライバから返される自動生成キーは、identity カラムの値です。
自動生成キーの値を取得する方法は、使用する Insert 文にパラメータが含まれるかどうかによって異なります。
アプリケーションは Statement.getGeneratedKeys
メソッドを使用して、生成されたキーの値をドライバから取得します。
Sybase ドライバは、接続を確立するときに、Sybase のデータベース オプション ansinull を on に設定します。ansinull を on に設定すると、ドライバは ANSI SQL 標準に準拠し、他の DataDirect Connect for JDBC ドライバの動作との一貫性が保たれるため、データベース間を横断するアプリケーションの開発が容易になります。
デフォルトでは、Sybase が SQL の等価比較 (=) において NULL
値を評価した場合、ANSI SQL 仕様とは異なる動作となります。たとえば、ANSI SQL 仕様では、col1=null
の評価は常に false になると定義されています。デフォルトのデータベース設定 (ansinull=off
) を使用すると、以下の文の col1
の値が NULL
である場合、比較の評価は false ではなく true になります。
SELECT * FROM table WHERE col1 = NULL
ansinull
を on に設定すると、SQL 文で =NULL
の代わりに IS NULL
が使用されるように、データベースのデフォルトの動作が変更されます。たとえば、Sybase ドライバを使用して、以下の文の col1
の値が NULL
である場合、比較の評価は true になります。
SELECT * FROM table WHERE col1 IS NULL
接続に関する Sybase のデフォルトの動作を回復するには、接続の確立後にアプリケーションで以下の文を実行します。
SET ANSINULL OFF
グローバル トランザクションで Sybase XA ドライバを使用するには、グローバル トランザクションをサポートするように Sybase サーバを設定しておく必要があります。『WebLogic JTA プログラマーズ ガイド』の「XA をサポートするための Sybase サーバのコンフィグレーション」を参照してください。
![]() ![]() ![]() |