- 1.1. Hibernate とは
- 1.2. Hibernate で何がどうなる?
- 1.3. 環境の準備
1.2 Hibernate で何がどうなる?
上述の通りHibernate は、「インピーダンス・ミスマッチ」を吸収し、さらに「煩雑」な作業を肩代わりしてくれる便利なものです。 ここでは、実際に何がどのように変わるのかを簡単に説明しておきたいと思います。
まず最初に、インピーダンス・ミスマッチの吸収についてです。 これまで、リレーショナルデータベースと、オブジェクト指向言語で開発を行う場合、 データベースへのコネクションを取得し、SQLを発行した結果得られる結果セットから オブジェクトを組み立てるという作業をしていました。Hibernate を導入すると、
- コネクションの取得に関する記述
- 発行するSQL文に関する記述
- 結果セットからのオブジェクト(JavaBean)構築に関する記述
がソースコードから消え去ります。 代わりに、オブジェクトとリレーショナルデータベースの関係を Hibernate に教えるための 設定ファイル(マッピングファイル)が必要となります。Hibernate は、このマッピングファイルの記述から オブジェクトとリレーショナルデータベースの関係を読み取り、要求されたオブジェクトの 構築を肩代わりしてくれます。 ここでは、Hibernate はアプリケーションのランタイム時のクラスライブラリとして働きます。
次に「煩雑」な作業の肩代わりについて説明します。 Hibernate では、「同じことを何度も書かなければならない」 という「煩雑さ」から利用者を解放するために roundtrip development を実現するための各種ツールを提供しています。
ツール名 | 概要 |
---|---|
AndroMDA | UML モデルを元に POJO クラスを生成するツール |
CodeGenerator(hbm2java) | マッピングファイルからデータベーススキーマを生成するツール |
XDoclet | Java ソースからマッピングファイルを生成するツール |
Middlegen | データベーススキーマからマッピングファイルを生成するのを手助けするツール |
SchemaExport(hbm2ddl) | マッピングファイルから Java ソースを生成するツール。XDoclet 用の Javadoc コメントも記述してくれる。 |
これらの各種ツールは、Hibernate で提示している以下の4つの開発シナリオをサポートすることを目的としています。
開発シナリオ | 手順 |
---|---|
Top down start with JavaBeans |
|
Bottom up start with relational schema |
すでにデータベースが存在する場合に利用する手法
|
Middle out start with mapping |
|
Meet-in-Middle start with both JavaBeans and relational schema |
JavaBeans と データベーススキーマが既に存在する場合に利用する手法
|
以上の全ての開発シナリオで各種ツールが開発を手助けしてくれることは間違いありません。 先ほどの、アプリケーションのランタイムにおけるクラスライブラリとしての働きとは異なり、 ここでは、アプリケーションを構築する際のツールとしての働きを見せます。
このように、Hibernate は、ランタイム時のクラスライブラリとしての役割と、 アプリケーション構築時のツールとしての役割という2つの側面を持つことを認識しておきましょう。
関連記事
- 1.Hibernate の基本 : ORマッパーであるHibernateの概要について説明しています