8.5 データベース接続の管理
Oracle RDF Graph Adapter for Eclipse RDF4Jでは、Oracle Databaseの接続プーリングがサポートされています。
OracleSailStore
のインスタンスは、接続プールを使用してOracleデータベースへの接続を管理します。Oracle Databaseの接続プーリングは、OraclePool
クラスを介して利用できます。通常、OraclePool
はOraclePool (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
に戻す必要があります。そうしないと、アプリケーションで接続リークが発生します。