TimesTenデータベース接続の管理
TimesTenを使用してデータベース接続を管理できます。
この項で説明する操作は、level1
サンプル・アプリケーションに基づいています。「TimesTenクイック・スタートおよびサンプル・アプリケーションについて」を参照してください。
TimesTenでのDSNについて
DSN (データ・ソース名)は、TimesTenデータベースおよびそのデータベースに接続するための接続属性セットのユーザーを識別する論理名です。作成するDSNのタイプは、アプリケーションがデータベースに直接接続するか、クライアントから接続するかによって異なります。
TimesTen Scaleoutの場合、DSNはグリッドに定義されているすべての接続属性において自動的に使用可能になります。データベース作成方法、および直接接続またはクライアント/サーバー接続の使用によるデータベースへの接続方法については、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のTimesTen Scaleoutの概要を参照してください。データベースの作成およびデータベースへの接続を参照してください。
TimesTen Classicについては、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』を参照してください。データベースに直接接続するには、TimesTen Classicの場合のLinuxおよびUNIXでのDSNの作成の説明に従ってDSNを作成します。データベースへのクライアント接続を作成するには、WindowsでのクライアントDSNの作成および構成またはLinuxおよびUNIXでのクライアントDSNの作成および構成の説明に従ってDSNを作成します。
DSNを作成すると、アプリケーションはデータベースに接続できます。次の項では、JDBC直接ドライバまたはJDBCクライアント・ドライバを使用して、データベースへのJDBC接続を作成する方法について説明します。
接続でのJavaラッパー機能の使用
TimesTenでは、標準のjava.sql.Wrapper
機能を介してTimesTen固有の実装を公開します。
Wrapper
を使用してTimesTenConnection
インタフェースを実装する接続オブジェクトを取得し、TimesTen固有の機能にアクセスできるようにできます。次の例では、TimesTenConnection
オブジェクトを返し、それからTimesTenの拡張であるsetReplicationTrack()
メソッドを呼び出しています。
String databaseUrl = null;
...
Connection conn = DriverManager.getConnection(databaseUrl);
If (conn.isWrapperFor(TimesTenConnection.class) ) {
TimesTenConnection tconn = conn.unwrap(TimesTenConnection.class);
tconn.setReplicationTrack(4);
}
...
データベースの接続URLの作成および接続属性の指定
JDBC接続を作成するには、データベースのTimesTen接続URLを指定します。TimesTen接続URLの形式は、次のとおりです。
jdbc:timesten:{direct|client}:dsn=DSNname;[DSNattributes;]
デフォルトはdirect
です。
たとえば、サンプル・データベースへの直接接続を次のように作成します。
String URL = "jdbc:timesten:direct:dsn=sampledb";
接続URLに属性を指定して、DSNの記述に接続属性をプログラム的に設定または上書きすることができます。
『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のデータ・マネージャのDSNまたはサーバーのDSNの接続属性を参照してください。
一般的な接続属性に特別な権限は必要ありません。データベースが最初にロードされたときに、最初の接続属性が設定された後、すべての接続で有効になります。インスタンス管理者のみが、データベースをロードして最初の接続属性の設定を変更できます。『Oracle TimesTen In-Memory Databaseリファレンス』の接続属性を参照してください。
たとえば、LockLevel
の一般的な接続属性を1に設定するには、次のようにURLを作成します。
String URL = "jdbc:timesten:direct:dsn=sampledb;LockLevel=1";
データベースへの接続
URLを定義したら、DriverManager
またはTimesTenDataSource
のいずれかのgetConnection()
メソッドを使用し、データベースに接続します。
DriverManager.getConnection()
メソッドを使用する場合は、データベースに接続するドライバURLを指定します。
import java.sql.*;
...
Connection conn = DriverManager.getConnection(URL);
TimesTenDataSource
メソッドgetConnection()
を使用するには、まずデータ・ソースを作成します。次に、TimesTenDataSource
メソッドsetUrl()
を使用してURLを設定し、getConnection()
を使用して接続します。
import com.timesten.jdbc.TimesTenDataSource;
import java.sql.*;
...
TimesTenDataSource ds = new TimesTenDataSource();
ds.setUrl("jdbc:timesten:direct:<dsn>");
Connection conn = ds.getConnection();
TimesTenユーザー名およびパスワードは、setUrl()
コールのURLのDSNに設定できますが、これを別に設定したり、Oracle Databaseパスワードを設定する(該当する場合)TimesTenDataSource
メソッドもあります。
TimesTenDataSource ds = new TimesTenDataSource();
ds.setUser(myttusername); // User name to log in to TimesTen
ds.setPassword(ttpassword); // Password to log in to TimesTen
ds.setUrl("jdbc:timesten:direct:<dsn>");
ds.setOraclePassword(oraclepassword); // Password to log in to Oracle DB
Connection conn = ds.getConnection();
DriverManager.getConnection()
メソッドまたはds.getConnection()
メソッドのいずれかによって、データベースへのハンドルとして利用できるConnection
オブジェクト(この例ではconn
)が返されます。DriverManager
メソッドgetConnection()
の使用例についてはlevel1
サンプル・アプリケーションを、TimesTenDataSource
メソッドgetConnection()
の使用例についてはlevel2
およびlevel3
サンプル・アプリケーションを参照してください。「TimesTenクイック・スタートおよびサンプル・アプリケーションについて」を参照してください。
データベースからの切断
データベースにアクセスする必要がなくなった場合、通常はConnection
メソッドclose()
をコールし、データベースへの接続をクローズします。
TimesTen接続はまた、標準のabort()
メソッドに加え、java.lang.AutoCloseable
を使用した標準のtry-with-resource機能もサポートしています。
エラーが発生した場合は、データベースから切断する前に、トランザクションをロールバックできます。「致命的ではないエラー」および「失敗したトランザクションのロールバック」を参照してください。
直接接続のオープンおよびクローズ
この例では、サンプル・データベースへの直接接続を作成し、いくつかのSQLを実行し、その後接続をクローズするためにDriverManager
クラスを使用するアプリケーションの一般的なフレームワークを示します。
実際の例については、level1
サンプル・アプリケーションを参照してください。(サンプル・アプリケーションについては、「TimesTenクイック・スタートおよびサンプル・アプリケーションについて」を参照してください。)
String URL = "jdbc:timesten:dsn=sampledb";
Connection conn = null;
try {
Class.forName("com.timesten.jdbc.TimesTenDriver");
} catch (ClassNotFoundException ex) {
// See Error Handling
}
try {
// Open a connection to TimesTen
conn = DriverManager.getConnection(URL);
// Report any SQLWarnings on the connection
// See Reporting Errors and Warnings
// Do SQL operations
// See TimesTen Features and Operations in Your Application below
// Close the connection to TimesTen
conn.close();
// Handle any errors
} catch (SQLException ex) {
// See Error Handling
}