「Hibernate」の版間の差分

削除された内容 追加された内容
m Botによる: {{Normdaten}}を追加
m編集の要約なし
1行目:
{{出典の明記|date=2021年6月}}
{{Infobox_Software |
名称 = Hibernate |
19 ⟶ 20行目:
第一の機能は、Javaクラスからデータベースの表(およびJavaデータ型から[[SQL]]データ型)へのマッピングである。また、データのクエリと検索機能も提供する。SQL呼び出しを自動生成することで、開発者がSQL呼び出しの結果をいちいちオブジェクトに変換する手間から解放し、性能への影響を最小にしつつ、あらゆるSQLデータベースへの移植性を達成している。
 
Hibernate は [[Plain Old Java Object]] (POJO) のための透過的永続性を提供する。永続性クラスに要求されることは、引数のない [[コンストラクタ]] が存在することであり、コンストラクタの可視性が ''public'' でなくともよい(一部アプリケーションでは、''equals()'' ''hashCode()'' メソッドにも注意が必要[http://www.hibernate.org/109.html])。
 
Hibernate には「ダーティチェッキング」機能がある。この機能は、永続的オブジェクトの変更されたフィールドについてのみ SQL による更新を行うもので、不必要なデータベース更新を削減する。
 
Hibernate は「HQL」という[[SQL]]ライクなクエリ言語を提供している。オブジェクト指向的な代替手段としてクライテリアクエリも提供されている。
 
Hibernate は[[スタンドアローン]]の[[Java]]アプリケーションにも使えるし、[[Java Servlet]] [[Enterprise JavaBeans|EJB]]セッションビーンを使った [[Java Platform, Enterprise Edition|JavaJakarta EE]] アプリケーションにも使える。
 
== 歴史 ==
Hibernate Gavin King をリーダーとして世界中の Java ソフトウェア開発者がチームを結成して開発した。その後、[[JBoss]]社(現在は[[レッドハット]]の一部)が Hibernate の主要開発者を雇い入れ、サポートを行うようになった。
 
バージョン3.xでは、Interceptor/Callback アーキテクチャ、ユーザ定義フィルタ、JDK 5.0 [[アノテーション]](Javaの[[メタデータ]]機能)などの新機能が新たに追加された。このバージョンは[[Enterprise JavaBeans|EJB]] 3.0仕様とも非常に近く(ただし、EJB 3.0仕様が完成し[[Java Community Process]]によってリリースされる前にリリースされた)、[[JBoss]]のEJB 3.0実装の基盤となった。
 
== モジュール ==
Hibernate はモジュール化され、それぞれ独立したチームが開発している。
 
; ORM (4.1 より前は Core)
: 主モジュールであり、主要機能が全て実装されている(<code>Session</code> サポート、トランザクション管理、オブジェクト・キャッシング、HQL)。
; Annotations
: JSR 175 の[[アノテーション]]サポート(JSR 220 [[Java Persistence API|JPA]]アノテーション標準に準拠)。XMLによるメタデータマッピングの代替手法を提供する。
; Entity manager
: Core モジュールのラッパーであり、JSR 220 JPA Entity Manager 標準をサポート
; Envers
: 履歴管理
46 ⟶ 47行目:
:
; OGM
: Object/Grid Mapper。[[NoSQL]] 対応。
; Search
: Hibernate で管理されている永続性実体群に対して、[[Lucene]] を使った検索を行うための抽象化層を提供するモジュール
; Shards
: Hibernate Core の[[分割 (データベース)|縦分割]]を提供するモジュール
; Tools
: [[Apache Ant]] のタスク群や[[Eclipse (統合開発環境)|Eclipse]]プラグインなど、Hibernate を使った開発に役立つモジュール
; Validator
: 一般的なデータベースの制約(数値の範囲、文字列形式、ヌル[[null]]チェックなど)を[[アノテーション]]を使って検証可能にするモジュール
 
== 永続性クラスのマッピング ==
JavaオブジェクトとSQLの変換をするには、JavaクラスとSQLテーブルの間の「マッピングデータ」がなければならない。Hibernate はこのためのいくつかの手段を提供する。
 
; XMLメタデータ
: 最も一般的な手法。各クラス(とそのプロパティ群)は、所定のDTDスキーマに対応したXML文書にて、XML要素として表現される。
; [[アノテーション]]によるメタデータ
: JSR 175 に準拠して、永続性クラスのソースコードに注釈として記述する。Hibernate がそれを解釈して設定ファイルにそのクラスに関する情報を追加する(あるいは、実行時に <code>Configuration</code> インスタンスに追加する)。アノテーション機能は別モジュール化されている。
; [[XDoclet]]メタデータ
: JSR 175 および Java 5.0 がリリースされる以前に、アノテーションと似たような機能を実装したもの。XDoclet 属性は永続性クラスのソースファイル上で記述され、[[Apache Ant]] の独立したタスクで構文解析され、XMLメタデータを生成する。
; メタデータのプログラムからの操作
: Hibernate は、<code>SessionFactory</code> のインスタンスを生成する前に、マッピングの詳細を操作するAPI(<code>Configuration</code> インスタンスを使用)も提供している。
 
== ダーティチェッキング ==
不要なSQLによる更新を防ぐため、Hibernate はダーティチェッキングという機能を提供している。この機能は、永続的オブジェクトの変更されたフィールドやコレクションのみを更新できるようにするものである。コレクションに含まれない部分の更新が必要かどうかを確認するため、Hibernate はそれらのフィールドを <code>Object.equals()</code> メソッドで比較する。一方、コレクションフィールド([http://java.sun.com/javase/6/docs/api/java/util/List.html <code>java.util.List</code>] [http://java.sun.com/javase/6/docs/api/java/util/Set.html <code>java.util.Set</code>] など)は同一性(参照)比較を行う。
 
== API ==
Hibernate API は、[[パッケージ (Java)|パッケージ]] [http://www.hibernate.org/hib_docs/v3/api/index.html org.hibernate] で提供されている。
 
; [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/SessionFactory.html org.hibernate.SessionFactory] インタフェース
: 新たな Hibernate セッションを生成する[[イミュータブル]]で[[スレッドセーフ]]なオブジェクトへの参照。Hibernate ベースのアプリケーションは、一般にこのインタフェースを実装したクラスのインスタンスを1つだけ使う([[Singleton パターン]] を利用)。
; [http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html org.hibernate.Session] インタフェース
: Hibernate セッション、すなわちデータベース上で行う操作の主要ポイントを表す。オブジェクトの永続性状態(一時的、永続的、分離)を管理し、データベースから永続的オブジェクトを取り出し、トランザクション境界を管理する。セッションは、データベース上の論理トランザクションと同程度に維持されることを意図している。セッションはスレッドセーフではなく、複数のクライアントから使われることを意図していない。
 
== 脚注 ==
93 ⟶ 94行目:
 
== 参考文献 ==
{{参照方法|date=2021年6月|section=1}}
* Christian Bauer, Gavin King: <cite>Java Persistence with Hibernate</cite>, Manning Publications Company, ISBN 1-932394-88-5
* Christian Bauer, Gavin King: <cite>Hibernate In Action</cite>, Manning Publications Company, ISBN 1-932394-15-X
99 ⟶ 101行目:
 
== 外部リンク ==
*[{{Official website|http://www.hibernate.org Hibernate公式サイト]}}
*[http://www.javafree.org/content/view.jf?idContent=3 Interview with Gavin King, founder of Hibernate]