Skip to main content

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 がオブジェクトにアクセスしている間に他のアプリケーションがそのデータを操作することはできません。 If you are working in an environment with real-time data that must remain accessible to other applications, you should consider XEP (see Persisting Java Objects with InterSystems XEP) as a possible alternative.

  • 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()
    

    See Installation Directory for system-specific information on the location of <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_root>\lib にある jar ファイル。

    • Hibernate 構成ファイル (hibernate.properties および hibernate.cfg.xml) が保持されているディレクトリ既定では、これらのファイルは両方とも <hibernate_root>\etc にあります。

Hibernate 構成

Hibernate 構成ファイル (hibernate.properties または hibernate.cfg.xml のいずれか) では、データベースの接続情報、および InterSystems 言語クラスの名前を指定します。

以下の 5 つの構成プロパティが必要です。

  • dialect — The fully qualified name of the InterSystems dialect class. ベースの言語クラスは以下のとおりです。

       org.hibernate.dialect.InterSystemsIRISDialect
    

    Hibernate 主キー・ジェネレータ・クラスのサポートを有効にする必要がある場合、このベース・クラスから派生したカスタム言語クラスを使用できます。

  • driver_class — The fully qualified name of the InterSystems JDBC driver class:

       com.intersystems.jdbc.IRISDriver
    

    このクラスは、InterSystems JDBC ドライバ .jar ファイルに含まれています (詳細は、“システムの設定” を参照)。

  • username — Username for the InterSystems IRIS namespace you want to access (default is _SYSTEM).

  • password — Password for the InterSystems IRIS namespace (default is SYS).

  • url — The URL for the InterSystems JDBC driver. URL の形式は以下のとおりです。

       jdbc:IRIS://<host>:<port>/<namespace>
    

    where <host> is the IP address of the machine hosting InterSystems IRIS, <port> is the SuperServer TCP port of your InterSystems IRIS instance, and <namespace> is the namespace that contains your InterSystems IRIS database data (see “Defining a JDBC Connection URL” in Using Java with InterSystems Software for more details).

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

FeedbackOpens in a new tab