Hibernate

Hibernate は、Java のためのオブジェクト関係マッピング (ORM) ライブラリであり、オブジェクト指向のドメインモデルを関係データベースにマッピングするためのフレームワークを提供する。Hibernate は、永続性に関わるデータベースアクセスを直接高レベルなオブジェクト操作機能に置換することでオブジェクト指向と関係モデルの不整合を解決する。
Hibernate はオープンソースのフリーソフトウェアであり、GNU Lesser General Public License で提供されている。
機能概要.
第一の機能は、Javaクラスからデータベースの表（およびJavaデータ型からSQLデータ型）へのマッピングである。また、データのクエリと検索機能も提供する。SQL呼び出しを自動生成することで、開発者がSQL呼び出しの結果をいちいちオブジェクトに変換する手間から解放し、性能への影響を最小にしつつ、あらゆるSQLデータベースへの移植性を達成している。
Hibernateは Plain Old Java Object (POJO) のための透過的永続性を提供する。永続性クラスに要求されることは、引数のないコンストラクタが存在することであり、コンストラクタの可視性が"public"でなくともよい（一部アプリケーションでは、"equals()"と"hashCode()"メソッドにも注意が必要）。
Hibernateには「ダーティチェッキング」機能がある。この機能は、永続的オブジェクトの変更されたフィールドについてのみSQLによる更新を行うもので、不必要なデータベース更新を削減する。
Hibernateは「HQL」というSQLライクなクエリ言語を提供している。オブジェクト指向的な代替手段としてクライテリアクエリも提供されている。
HibernateはスタンドアローンのJavaアプリケーションにも使えるし、Java ServletやEJBセッションビーンを使ったJakarta EEアプリケーションにも使える。
歴史.
HibernateはGavin Kingをリーダーとして世界中のJavaソフトウェア開発者がチームを結成して開発した。その後、JBoss社（現在はレッドハットの一部）がHibernateの主要開発者を雇い入れ、サポートを行うようになった。
バージョン3.xでは、Interceptor/Callbackアーキテクチャ、ユーザ定義フィルタ、JDK 5.0アノテーション（Javaのメタデータ機能）などの新機能が新たに追加された。このバージョンはEJB 3.0仕様とも非常に近く（ただし、EJB 3.0仕様が完成しJava Community Processによってリリースされる前にリリースされた）、JBossのEJB 3.0実装の基盤となった。
モジュール.
Hibernateはモジュール化され、それぞれ独立したチームが開発している。
永続性クラスのマッピング.
JavaオブジェクトとSQLの変換をするには、JavaクラスとSQLテーブルの間の「マッピングデータ」がなければならない。Hibernateはこのためのいくつかの手段を提供する。
ダーティチェッキング.
不要なSQLによる更新を防ぐため、Hibernateはダーティチェッキングという機能を提供している。この機能は、永続的オブジェクトの変更されたフィールドやコレクションのみを更新できるようにするものである。コレクションに含まれない部分の更新が必要かどうかを確認するため、Hibernateはそれらのフィールドをcodice_5メソッドで比較する。一方、コレクションフィールド（codice_6やcodice_7など）は同一性（参照）比較を行う。
API.
Hibernate APIは、パッケージ org.hibernateで提供されている。