hibernate
「hibernate」とは・「hibernate」の意味
「hibernate」は英語の単語で、動物が冬眠することを指す。また、コンピュータの用語としても使われ、システムの状態を保存して電源を切ることを指す。動物が冬眠するという意味では、寒さや食糧不足など厳しい環境を避けるために、体温を下げてエネルギー消費を抑える行動を指す。一方、コンピュータの用語としての「hibernate」は、電源を切る前に現在の作業状態をハードディスクに保存し、再起動時にその状態を復元する機能を指す。「hibernate」の発音・読み方
「hibernate」の発音はIPA表記で /ˈhaɪ.bəˌneɪt/ となる。カタカナ表記では「ハイバネイト」と読む。日本人が発音する際のカタカナ英語では「ハイバーネイト」となる。「hibernate」の定義を英語で解説
「hibernate」is a term used to describe the act of an animal going into a state of inactivity or dormancy during the winter season, often to conserve energy during times of cold or scarcity of food. In the context of computing, 'hibernate' refers to a function that allows the system to save its current state to the hard disk before powering off, enabling the restoration of the same state upon rebooting.「hibernate」の類語
「hibernate」の類語としては、動物が冬眠するという意味では「dormancy」や「torpor」がある。一方、コンピュータの用語としては「suspend」や「sleep mode」が近い意味を持つ。「hibernate」に関連する用語・表現
「hibernate」に関連する用語としては、「Hibernate」はJavaのオープンソースのオブジェクト関係マッピング(ORM)ライブラリの一つである。また、「hibernation」は「hibernate」の名詞形で、冬眠やシステムの休止状態を指す。「hibernate」の例文
以下に、「hibernate」を用いた例文を10個示す。 1. Bears hibernate during the winter.(熊は冬に冬眠する)2. My computer is set to hibernate after 30 minutes of inactivity.(私のコンピューターは、30分間操作がないと休止状態になる設定になっている)
3. Some animals hibernate to conserve energy.(一部の動物はエネルギーを節約するために冬眠する)
4. Hibernate mode is a power-saving state for computers.(休止状態はコンピューターの省電力状態である)
5. Many animals hibernate in the winter to survive.(多くの動物は冬に生き延びるために冬眠する)
6. Hibernate is a feature that saves your work and turns off the computer.(休止状態は、作業内容を保存してコンピューターをオフにする機能である)
7. Some bats hibernate in caves during the winter.(一部のコウモリは冬に洞窟で冬眠する)
8. Hibernate mode saves all open documents and programs to the hard disk before turning off the computer.(休止状態は、コンピューターをオフにする前に、すべての開いているドキュメントとプログラムをハードディスクに保存する)
9. Snakes hibernate in the cold months.(ヘビは寒い月に冬眠する)
10. Hibernate mode allows you to resume your work where you left off.(休止状態は、作業を中断したところから再開することを可能にする)
Hibernate
Hibernate Development Teamによって開発されている、Java永続化フレームワーク。一般には「O/Rマッピングフレームワーク」と呼ばれている。LGPLで提供されている。
プログラム中で扱うオブジェクトをRDB(Relational Database)に格納したり、RDBから検索・取得したデータをオブジェクトへと自動的に変換する機能を持つ。クラスの属性とRDBの表の列との対応を定義ファイルにて与えることにより、前述のようなオブジェクト⇔RDBの変換を自動化することができる。クラスの定義からRDBの表を作成したり、逆にRDBの表に合わせてクラスのソースを生成するツールも提供されている。
Entity BeanやJDOといったJava標準の永続化技術が、複雑になり過ぎたため、より軽量な永続化フレームワークをという要望に応える形で登場した。開発者の多くの支持を集めたため、逆にEntity BeanがHibernateの仕様を取り込んで標準としたという経緯がある。
関連見出し
GNU Lesser General Public License
JBoss
Cayenne
関連URL
hibernate.org(http://www.hibernate.org/)

Hibernate
別名:ハイバネート
Hibernateとは、Hibernate Development Teamによって開発されているJava言語向けのO/Rマッピング用のライブラリの名称である。HibernateのライセンスはLGPLであり、スタンドアローンのJavaアプリケーションで使える他、Java ServletやEJBセッションビーンを使った Java EE アプリケーションなどでも利用可能である。また、「HQL」という独自のSQLライクな言語も提供している。
参照リンク
hibernate.org - 公式サイト
Hibernate
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/03/17 03:30 UTC 版)
![]() | この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2021年6月) |
開発元 | レッドハット |
---|---|
最新版 |
6.6.11.Final[1]
/ 2025年3月16日 |
リポジトリ | |
対応OS | クロスプラットフォーム |
プラットフォーム | Javaプラットフォーム |
種別 | ORM |
ライセンス | LGPL |
公式サイト | www.hibernate.org |
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()メソッドにも注意が必要[1])。
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はモジュール化され、それぞれ独立したチームが開発している。
- ORM (4.1より前はCore)
- 主モジュールであり、主要機能が全て実装されている(
Session
サポート、トランザクション管理、オブジェクト・キャッシング、HQL)。 - Annotations
- JSR 175 のアノテーションサポート(JSR 220 JPAアノテーション標準に準拠)。XMLによるメタデータマッピングの代替手法を提供する。
- Entity manager
- Coreモジュールのラッパーであり、JSR 220 JPA Entity Manager標準をサポート
- Envers
- 履歴管理
- Metamodel Generator
- OGM
- Object/Grid Mapper。NoSQL対応。
- Search
- Hibernateで管理されている永続性実体群に対して、Luceneを使った検索を行うための抽象化層を提供するモジュール
- Shards
- Hibernate Coreの縦分割を提供するモジュール
- Tools
- Apache Antのタスク群やEclipseプラグインなど、Hibernateを使った開発に役立つモジュール
- Validator
- 一般的なデータベースの制約(数値の範囲、文字列形式、nullチェックなど)をアノテーションを使って検証可能にするモジュール
永続性クラスのマッピング
JavaオブジェクトとSQLの変換をするには、JavaクラスとSQLテーブルの間の「マッピングデータ」がなければならない。Hibernateはこのためのいくつかの手段を提供する。
- XMLメタデータ
- 最も一般的な手法。各クラス(とそのプロパティ群)は、所定のDTDスキーマに対応したXML文書にて、XML要素として表現される。
- アノテーションによるメタデータ
- JSR 175に準拠して、永続性クラスのソースコードに注釈として記述する。Hibernateがそれを解釈して設定ファイルにそのクラスに関する情報を追加する(あるいは、実行時に
Configuration
インスタンスに追加する)。アノテーション機能は別モジュール化されている。 - XDocletメタデータ
- JSR 175およびJava 5.0がリリースされる以前に、アノテーションと似たような機能を実装したもの。XDoclet属性は永続性クラスのソースファイル上で記述され、Apache Antの独立したタスクで構文解析され、XMLメタデータを生成する。
- メタデータのプログラムからの操作
- Hibernateは、
SessionFactory
のインスタンスを生成する前に、マッピングの詳細を操作するAPI(Configuration
インスタンスを使用)も提供している。
ダーティチェッキング
不要なSQLによる更新を防ぐため、Hibernateはダーティチェッキングという機能を提供している。この機能は、永続的オブジェクトの変更されたフィールドやコレクションのみを更新できるようにするものである。コレクションに含まれない部分の更新が必要かどうかを確認するため、HibernateはそれらのフィールドをObject.equals()
メソッドで比較する。一方、コレクションフィールド(java.util.List
やjava.util.Set
など)は同一性(参照)比較を行う。
API
Hibernate APIは、パッケージ org.hibernateで提供されている。
- org.hibernate.SessionFactoryインタフェース
- 新たなHibernateセッションを生成するイミュータブルでスレッドセーフなオブジェクトへの参照。Hibernateベースのアプリケーションは、一般にこのインタフェースを実装したクラスのインスタンスを1つだけ使う(Singleton パターン を利用)。
- org.hibernate.Sessionインタフェース
- Hibernateセッション、すなわちデータベース上で行う操作の主要ポイントを表す。オブジェクトの永続性状態(一時的、永続的、分離)を管理し、データベースから永続的オブジェクトを取り出し、トランザクション境界を管理する。セッションは、データベース上の論理トランザクションと同程度に維持されることを意図している。セッションはスレッドセーフではなく、複数のクライアントから使われることを意図していない。
脚注
関連項目
参考文献
![]() | 出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 |
- Christian Bauer, Gavin King: Java Persistence with Hibernate, Manning Publications Company, ISBN 1-932394-88-5
- Christian Bauer, Gavin King: Hibernate In Action, Manning Publications Company, ISBN 1-932394-15-X
- Will Iverson: Hibernate: A J2EE™ Developer's Guide, Addison Wesley Professional, ISBN 0-321-26819-9
- James Elliott: Hibernate: A Developer's Notebook, O'Reilly, ISBN 0-596-00696-9
外部リンク
固有名詞の分類
- hibernateのページへのリンク