Hibernate のサポート
InterSystems Hibernate 言語は、Hibernate 言語インタフェースの実装です。SQL の実装はベンダごとに若干異なるので、ベンダはこの言語インタフェースを使用することで、特定のデータベースに対して Hibernate のカスタム・マッピングを作成できるようになります。ベンダ提供の言語の実装は Hibernate の一部として配布されます。
以下のトピックで、InterSystems Hibernate 言語の詳細な技術情報を提供します。
Hibernate と InterSystems Hibernate 言語
Java Persistence Architecture (JPA) は Java プロジェクト内の複雑なオブジェクト階層に推奨される永続性テクノロジです。インターシステムズは、現在、JPA 仕様の Hibernate 実装を介した JPA をサポートしています。Hibernate は、リレーショナル・データベースにオブジェクト/リレーショナル・マッピング (ORM) サービスを提供する JDBC のラッパとして動作する JBoss のオープン・ソース・フレームワークです。Hibernate は、ベンダに依存しない永続性サービスを提供します。このサービスは、一部のプロジェクトの要件である場合があります。
InterSystems Hibernate 言語は、Hibernate 言語インタフェースの実装です。SQL の実装はベンダごとに若干異なるので、Hibernate は、ベンダ提供の "方言 (dialect)" を備え、特定のデータベースへのマッピングをカスタマイズします。現在の Hibernate ディストリビューションには、高性能なカスタマイズされた InterSystems 言語クラスが含まれています。
Hibernate を使用する状況
Hibernate は、オブジェクトをリレーショナル・テーブルに永続化するためのインフラストラクチャを提供します。基本的には、Hibernate は、オブジェクトと SQL クエリ内のテーブルとの間の変換を透過的に処理しながら、ユーザがオブジェクトの操作に集中できるようにする JDBC のラッパです。Hibernate はほとんどの環境で使用できますが、常に最適なオプションとは限りません。以下に、留意する必要のある考慮事項をいくつか示します。
-
Hibernate は、複雑であると同時に静的なオブジェクト・モデルを使用している場合に役立ちます。InterSystems IRIS テーブル・モデルにマップする前に、データがどのような内容で、クラスがどのようなやり取りを行うかを理解しておく必要があります。
-
Hibernate オブジェクトはキャッシュされているため、Hibernate がオブジェクトにアクセスしている間に他のアプリケーションがそのデータを操作することはできません。リアルタイム・データが含まれる環境で作業していて、他のアプリケーションがそのデータにアクセスできる状態を保つ必要がある場合は、考えられる代替手段として XEP を検討してください ("InterSystems XEP による Java オブジェクトの永続化" を参照してください)。
-
Hibernate は、単純なクエリによる一般的な CRUD 操作には適していますが、より複雑なクエリは、JDBC を直接使用した方が容易に作成でき、より効率的です。
インストールと構成
このセクションでは、InterSystems IRIS で Hibernate を使用するためにシステムを設定する手順を説明します。この手順では、正しいバージョンの InterSystems IRIS と Hibernate がインストール済みで操作可能な状態であることが前提となっています。
要件
システムに以下のソフトウェアをインストールする必要があります。
-
InterSystems IRIS®。
-
Hibernate 5.2 または 5.3。Hibernate は、www.hibernate.org からダウンロードできます。
-
Java JDK 1.8 以降のサポート対象バージョン (このリリース用のオンライン・ドキュメント “インターシステムズのサポート対象プラットフォーム” の "サポート対象 Java テクノロジ" を参照してください)。
ディレクトリ
この章の手順では、以下のディレクトリを参照します。
-
<install-dir> — InterSystems IRIS のインストール・ディレクトリ。InterSystems IRIS のインスタンスの <install-dir> を見つけるには、InterSystems ターミナルを開いて以下のコマンドを発行します。
write $system.Util.InstallDirectory()
<install-dir> の場所に関するシステム固有の情報は、"インストール・ガイド" の “インストール・ディレクトリ” を参照してください。
-
<hibernate_root> — Hibernate のインストール・ディレクトリ。
システムの設定
システムに以下の変更を行います。
-
intersystems-jdbc-<version>.jar ファイル
InterSystems JDBC jar ファイルには、InterSystems JDBC ドライバが含まれています。まだ行っていない場合は、最新バージョンの JDBC jar ファイルを <hibernate_root>\lib (<hibernate_root> はインストール・ディレクトリ) にコピーしてください。ファイルには intersystems-jdbc-<version>.jar という名前が付けられており、<version> は、3.3.0 などの数値です (最新のバージョン番号はこれより大きい可能性があります)。最新バージョンのファイルは、"InterSystems IRIS Driver PackagesOpens in a new tab" ページからダウンロードできます。
-
Java Classpath
以下が Java Classpath 上に存在することを確認します。
Hibernate 構成
Hibernate 構成ファイル (hibernate.properties または hibernate.cfg.xml のいずれか) では、データベースの接続情報、および InterSystems 言語クラスの名前を指定します。
以下の 5 つの構成プロパティが必要です。
-
dialect — InterSystems 言語クラスの完全修飾名。ベースの言語クラスは以下のとおりです。
org.hibernate.dialect.InterSystemsIRISDialect
Hibernate 主キー・ジェネレータ・クラスのサポートを有効にする必要がある場合、このベース・クラスから派生したカスタム言語クラスを使用できます。
-
driver_class — InterSystems JDBC ドライバ・クラスの完全修飾名。
com.intersystems.jdbc.IRISDriver
このクラスは、InterSystems JDBC ドライバ .jar ファイルに含まれています (詳細は、“システムの設定” を参照)。
-
username — アクセスする InterSystems IRIS ネームスペースのユーザ名 (既定では、_SYSTEM)。
-
password — InterSystems IRIS ネームスペースのパスワード (既定では、SYS)。
-
url — InterSystems JDBC ドライバの URL。URL の形式は以下のとおりです。
jdbc:IRIS://<host>:<port>/<namespace>
ここで <host> は、InterSystems IRIS をホストするマシンの IP アドレス、<port> は、InterSystems IRIS インスタンスのスーパーサーバ TCP ポート、<namespace> は、InterSystems IRIS データベースのデータを含むネームスペースです (詳細は、"InterSystems ソフトウェアでの Java の使用法" の “JDBC 接続 URL の定義” を参照してください)。
hibernate.properties の一般的なエントリには、以下の行が含まれます (ご使用のシステムに合わせて適宜 URL、ユーザ名、およびパスワードを変更してください)。
hibernate.dialect org.hibernate.dialect.InterSystemsIRISDialect
hibernate.connection.driver_class com.intersystems.jdbc.IRISDriver
hibernate.connection.url jdbc:IRIS://127.0.0.1:51773/USER/
hibernate.connection.username _SYSTEM
hibernate.connection.password SYS
以下の例は、hibernate.cfg.xml に表示される情報と同じ情報を示しています。
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.InterSystemsIRISDialect
</property>
<property name="connection.driver_class">
com.intersystems.jdbc.IRISDriver</property>
<property name="connection.username">_SYSTEM</property>
<property name="connection.password">SYS</property>
<property name="connection.url">
jdbc:IRIS://127.0.0.1:51773/USER
</property>
</session-factory>
</hibernate-configuration>
Caution:
hibernate.properties および hibernate.cfg.xml の両方に同じプロパティが設定されている場合、Hibernate は hibernate.cfg.xml の値を使用します。
言語ファイルの場所
InterSystems Hibernate 言語は、以下の場所に配置されている 4 つのファイルで構成されています
(<hibernate> は hibernate-orm\hibernate-core\src\main\java\org\hibernate です)。
-
<hibernate>\dialect\ の InterSystemsIRISDialect.java
-
<hibernate>\dialect\identity\ の IntersystemsIRISIdentityColumnSupport.java
-
<hibernate>\exception\internal\ の InterSystemsIRISSQLExceptionConversionDelegate.java
-
<hibernate>\sql\ の InterSystemsIRISJoinFragment.java
これらのファイルがまだない場合、ダウンロード情報については、インターシステムズのサポート窓口Opens in a new tabまでお問い合わせください。