8.5 データベース接続の管理

Oracle RDF Graph Adapter for Eclipse RDF4Jでは、Oracle Databaseの接続プーリングがサポートされています。

OracleSailStoreのインスタンスは、接続プールを使用してOracleデータベースへの接続を管理します。Oracle Databaseの接続プーリングは、OraclePoolクラスを介して利用できます。通常、OraclePoolOraclePool (DataSource ods)コンストラクタを使用してDataSourceで初期化されています。この場合、OraclePoolはデータソースの接続プーリング機能を使用しながらDataSourceの拡張ラッパーとして動作します。OracleSailStoreオブジェクトを作成するときには、storeコンストラクタ内にOraclePoolオブジェクトを指定するだけで十分です。続けて、Eclipse RDF4J用のアダプタによりデータベース接続が自動的に制御されるようになります。OraclePoolには、他にもいくつかのコンストラクタが用意されています。このコンストラクタを使用すると、たとえば、JDBC URLとデータベースusernameおよびpasswordを使用してOraclePoolインスタンスを作成できます。詳細は、Oracle RDF Graph Adapter for Eclipse RDF4Jのダウンロードに含まれるJavadocを参照してください。

明示的にOracle接続オブジェクト(基本的にデータベース接続ラッパーである)を取得する必要がある場合は、OraclePool.getOracleメソッドを起動します。接続を終了した後は、OraclePool.returnOracleDBtoPoolメソッドを起動して、接続プールにオブジェクトを戻します。

OracleSailStoreからOracleSailConnection、またはOracleRepositoryからOracleSailRepositoryConnectionを取得すると、OraclePoolから新しいOracleDBオブジェクトが取得され、RDF4J接続オブジェクトの作成に使用されます。READ_COMMITTEDトランザクション分離は、異なるRDF4J接続オブジェクト間で維持されます。

この動作の例外の1つは、OracleSailConnectionの既存のインスタンスでasRepositoryConnectionメソッドをコールしてOracleSailRepositoryConnectionを取得したときに発生します。この場合、元のOracleSailConnectionと新しく取得されたOracleSailRepositoryConnectionは、同じOracleDBオブジェクトを使用します。OracleSailConnectionまたはOracleSailRepositoryConnectionオブジェクトの使用が終了したら、そのcloseメソッドをコールしてOracleDBオブジェクトをOraclePoolに戻す必要があります。そうしないと、アプリケーションで接続リークが発生します。