InterSystems IRIS デモ : JDBC とインターシステムズのデータベース
ここでは、InterSystems JDBC ドライバを使用して InterSystems IRIS® データ・プラットフォーム・インスタンスに接続し、InterSystems IRIS で Java を使用できるようにする方法を紹介します。
JDBC : InterSystems IRIS で使用する方法
インターシステムズは、完全互換 (JDBC 4.2)、pure Java、タイプ 4 の JDBC ドライバを提供しています。これは、依存関係を持たない単一のスタンドアロン JAR ファイルです。JDBC に既に習熟していて、JDK 1.8 がインストールされている場合、必要な作業は JDBC ドライバをローカルの CLASSPATH に追加することのみです ("JDBC : 操作例" を参照)。JDBC の URL (接続文字列) は、以下のとおりです。
jdbc:IRIS://ipAddress:superserverPort/namespace
これらの変数は、InterSystems IRIS インスタンスのホストの IP アドレス、インスタンスのスーパーサーバのポート、およびインスタンス上のネームスペースを表します。
ローカル・マシン上のインスタンスに接続している (ホスト名 localhost または IP アドレス 127.0.0.1 を使用している) 場合は、共有メモリ接続と呼ばれる特別な高性能のローカル接続を使用できます。共有メモリ接続についての詳細は、“JDBC : 共有メモリ接続のユニークな点” を参照してください。
このドキュメントの目的は、詳しいことは抜きにして InterSystems IRIS の基本機能を体験していただくことなので、以下の操作例はシンプルなものにしてあります。InterSystems IRIS をプロダクション・システムで使用する際には、例えばセキュリティに関して (それに限りませんが)、多くの異なる処理が必要になります。したがって、ここに示す InterSystems IRIS の操作例と本番での操作を混同しないようにしてください。このドキュメントの最後に示すソースでは、プロダクション環境の InterSystems IRIS で JDBC を使用するために必要な情報が提供されています。
JDBC : InterSystems IRIS の Java 接続オプションの一部
InterSystems IRIS の JDBC ドライバは、InterSystems IRIS のコア Java コンポーネントで、標準のリレーショナル (SQL) アクセスをサポートします。このドライバは、Java 呼び出しの場合の接続メカニズムも提供します。このメカニズムでは、ネイティブに格納されている形式でデータにアクセスする InterSystems IRIS Native SDK for Java が使用されます。オブジェクトに基づいた Java 統合向けに、InterSystems IRIS は別の機能、InterSystems IRIS XEP コンポーネントも提供しています。
このように、InterSystems IRIS は、同じ物理接続とトランザクションのコンテキストを使用して、ネイティブ、リレーショナル、およびオブジェクト指向の複数のパラダイムに従ってデータを操作するユニークな一連の機能を提供します。より複雑なアプリケーションのために、インターシステムズは Hibernate を完全にサポートします。これらすべての形式の接続を可能にするのが InterSystems IRIS JDBC ドライバです。
JDBC : 共有メモリ接続のユニークな点
他のデータベース・プラットフォームと同様に、リモートの InterSystems IRIS インスタンスへの JDBC 接続では TCP/IP が使用されます。パフォーマンスを最大限に高めるために、InterSystems IRIS は Java 共有メモリ接続も提供します。共有メモリ接続は、InterSystems IRIS インスタンスと同じマシン上で実行される多くの Java アプリケーションで使用できます。
共有メモリ接続は、同じ物理マシン上で実行される JDBC クライアントと InterSystems IRIS のインスタンスによって共有される一時デバイスであり、仮想メモリに格納されます。また、これらの接続には、高いコストのかかる可能性があるカーネル・ネットワーク・スタックの呼び出しは不要です。JDBC クライアントから InterSystems IRIS へのチャネルを直接使用することにより、JDBC 操作のために極限までの低遅延と高スループットを実現します。
共有メモリの詳細は、"InterSystems JDBC ドライバでの Java の使用法" の “共有メモリ接続” を参照してください。
JDBC : 操作例
JDBC と InterSystems IRIS の操作方法と、その操作がどれだけ簡単なのかを示すデモが用意されています。
このコードは、共有メモリ接続によって効率的に処理できる大量のデータを扱うわけではないため、InterSystems Java 共有メモリ接続のパフォーマンス能力の向上を示すものではないことに注意してください。
開始の前に
この手順を使用するには、バージョン 1.8 の JDK および選択した Java IDE がインストールされた、操作するためのシステム、および接続先として、稼働している InterSystems IRIS インスタンスが必要です。InterSystems IRIS の選択肢としては、いくつかのタイプのラインセンス付与されたインスタンスおよび無料の評価版インスタンスがあります。操作しているシステムでインスタンスをホストする必要はありません (ただし、相互のネットワーク・アクセスが必要です)。操作を実行するインスタンスをまだ用意できていない場合にインスタンスのタイプ別の導入方法の詳細を確認するには、"InterSystems IRIS の基礎 : IDE の接続" の "InterSystems IRIS の導入Opens in a new tab" を参照してください。同じドキュメントの "InterSystems IRIS 接続情報Opens in a new tab" および "Java IDEOpens in a new tab" の情報を使用して、IDE を InterSystems IRIS インスタンスに接続します。このデモでは、以下のコードで示しているように USER ネームスペースに接続することも、インストールしたインスタンスで作成した別のネームスペースを指定することもできます。
InterSystems IRIS JDBC ドライバ intersystems-jdbc-version.jar をローカルの CLASSPATH に追加することも必要です。このファイルは、"InterSystems IRIS Driver PackagesOpens in a new tab" ページからダウンロードできます。InterSystems IRIS をローカル・マシンまたはアクセス可能な他のマシンにインストールしている場合、このファイルは、install-dir\dev\java\lib\JDK18 にあります。install-dir は、InterSystems IRIS のインストール・ディレクトリです。
サンプル・コードの試行
サンプル・コードを切り取って IDE に貼り付け、"InterSystems IRIS の基礎 :IDE の接続" で説明している該当のインスタンス用の接続設定Opens in a new tabで、url 変数、connection 変数、ユーザ名、およびパスワードを更新します
import java.sql.*;
public class JDBCSample {
public static void main(String[] str) throws Exception {
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
Class.forName("com.intersystems.jdbc.IRISDriver");
Connection connection = DriverManager.getConnection(url,"_SYSTEM","SYS");
// Replace _SYSTEM and SYS with a username and password on your system
String createTable = "CREATE TABLE People(ID int, FirstName varchar(255), LastName varchar(255))";
String insert1 = "INSERT INTO People VALUES (1, 'John', 'Smith')";
String insert2 = "INSERT INTO People VALUES (2, 'Jane', 'Doe')";
String query = "SELECT * FROM People";
Statement statement = connection.createStatement();
statement.executeUpdate(createTable);
statement.executeUpdate(insert1);
statement.executeUpdate(insert2);
ResultSet resultSet = statement.executeQuery(query);
System.out.println("Printing out contents of SELECT query: ");
while (resultSet.next()) {
System.out.println(resultSet.getString(1) + ", " + resultSet.getString(2) + ", " + resultSet.getString(3));
}
resultSet.close();
statement.close();
connection.close();
}
}
接続とクエリが正常に完了すると、コンソール・ウィンドウに SELECT クエリの結果が表示されます。
JDBC の詳細
JDBC、InterSystems IRIS のその他の Java 相互運用性テクノロジ、およびその他の関連トピックの詳細は、以下を参照してください。
-
"InterSystems IRIS での Java JDBC の使用法" の “InterSystems Java 接続オプション” — JDBC ドライバによって有効になるすべての InterSystems IRIS Java テクノロジの概要
InterSystems JDBC ドライバでの Java の使用法 — インターシステムズのドキュメント : 手順を追った JDBC の使用法の説明
-
Java OverviewOpens in a new tab — インターシステムズのオンライン学習資料 (概要ビデオ)
-
InterSystems IRIS デモ : XEP による Java オブジェクト永続性 — インターシステムズのドキュメント : Java XEP デモ
-
InterSystems XEP による Java オブジェクトの永続化 — インターシステムズのドキュメント : 手順を追った XEP の使用法の説明
-
InterSystems Native SDK for Java の使用法 — インターシステムズのドキュメント : InterSystems Native SDK
-
Java サード・パーティ API 用 InterSystems 実装リファレンス — インターシステムズのドキュメント : JDBC および Hibernate を使用した InterSystems IRIS への接続
-
Hibernate と JDBC の比較Opens in a new tab — Stack Overflow の記事