Caché の今回のバージョンでは、以下のような多くの重要な Java 新機能が提供されています。
-
パフォーマンスの向上、クライアント側のキャッシングの改善、および J2EE 統合を含む、Caché Java バインディングの新バージョン
-
EJB (Enterprise Java Beans) に対するダイレクト・サポート
-
Caché クラスがコンパイルされるときは常に、Java クラスを自動的に生成する機能 (
クラス・プロジェクション を参照してください)
-
Caché クラス内の Java メソッドのサポート
このセクションでは、初期に生成された Caché Java バインディングを使用して記述されたアプリケーションを、今回のバージョンにアップグレードする方法を説明します。
Caché Java バインディングの新バージョンでは、以前のバージョンからの多くの重要なアーキテクチャが変更されています。以下は その概要です。
-
Caché JDBC インタフェースとの統合。これにより、1 台のサーバ接続で、SQL とオブジェクト・アクセスの混合が可能になります。また、データベースへの接続のため、(オブジェクト・アクセスを使用していますが) アプリケーションはより多くの標準 JDBC 接続メカニズムを使用することができます。
-
より複雑な Java アプリケーションの使用に対して設計されている、次世代のキャッシング・メカニズム
-
EJB (Enterprise Java Beans) を含め、より多くの Java クラス・タイプをサポート
-
Caché クラス内の Java メソッドのサポート
以前の Java バインディングから、API に多くの変更がありました。この変更には、アプリケーションの変更を必要とするものもあります。
新しいバインディングの接続は、Caché JDBC インタフェースと統合されているので、接続は SQL とオブジェクト・アクセスの両方をサポートします。また、従来のバインディングは Java と JDBC に対し別々の接続が必要でしたが、今回のバージョンでは、単独の接続が Java バインディングと JDBC ドライバの両方をサポートします。
従来のバインディングでは、以下のコードでサーバに接続していました。
ObjectFactory factory = null;
String url="cn_iptcp:127.0.0.1[1972]:SAMPLES";
// ...
factory = new ObjectFactory(url);
新しいバインディングでの接続コードは以下の通りです。
Database dbconnection = null;
String url="jdbc:Cache://localhost:1972/SAMPLES";
String username="_SYSTEM"; // null for default
String password="sys"; // null for default
dbconnection = CacheDatabase.getDatabase(url, username, password);
Note:
現在は、引き続き
ObjectFactory を使用することもできますが、これはお勧めしません。 また、将来のリリースからも削除される予定です。
以前のバインディングと同様に、メソッドは Java メソッドとして投影されます。また、プロパティが Java の
get と
set のメソッドとして投影される点も従来通りです。
従来のバインディングでは、メソッド引数と返り値は、基本タイプ (
int、
boolean、
float など) としても知られる Java リテラル・データ型として表されていましたが、新しいバインディングでは、Java オブジェクト (
Integer、
Boolean、
Float など) として表されます。これは、NULL 値を持つ引数を指定する機能のように、より優れた柔軟性を提供します。
/* Insert a new element */
colors._insert( "Orange" );
/* Remove the first element */
colors._removeAt( 1 );
/* Show the changes to the collection */
colors = person.getFavoriteColors();
for (r = 1; r <= colors._count(); r++) {
System.out.println
( "Element #" + Integer.toString( r ) + "->" + colors._getAt( r ) );
}
新しいバインディングを使用する、類似するコードは以下の通りです。
/* Insert a new element */
colors._insert( "Orange" );
/* Remove the first element */
colors._removeAt( new Integer(1) );
/* Show the changes to the collection */
colors = person.getFavoriteColors();
for (r = 1; r <= colors._count().intValue(); r++) {
System.out.println
( "Element #" + Integer.toString( r ) + "->"
+ colors._getAt( new Integer(r) ) );
}
従来のバインディングから新しいバインディングへの変更は以下の通りです。
新しいバインディングによって、JDBC は単独の接続でオブジェクト・アクセスを呼び出すことができるようになります。これにより、JDBC の意味論を使用して、Java アプリケーション内でダイナミック SQL クエリを実行することができます。
以下は、従来のバインディングのサンプル・クエリです。
ResultSet rs = null; // this is a Cache class ...
// ...
/* Create a ResultSet */
rs = new ResultSet(server, "Sample.Person", "ByName");
// ...
/* Execute the query and loop across the returned rows */
rs.execute();
以下は、新しいバインディングの類似したコードです。
CacheQuery cq = null;
java.sql.ResultSet rs = null;
// ...
/* Create a CacheQuery */
cq = new CacheQuery( server, "Sample.Person", "ByName" );
/* Execute the query and loop across the returned rows */
rs = cq.execute("");
新しいバインディングは、
CacheQuery クラスを使用してクエリを実行し、その結果を標準 JDBC 結果セットに配置します。 これにより、クエリを準備し、実行する機能と、結果セットを処理する機能を分割できるという利点があります。
Note:
引き続き、従来の Caché
ResultSet メカニズムを使用することができますが、これはお勧めしません。 また、将来のリリースでは削除される予定です。
ストリーム、コレクション、およびリレーションシップ
ストリーム、コレクション、およびリレーションシップのインタフェースは現在、Java 標準インタフェースを使用しています。