目次へ

1.2 Hibernate で何がどうなる?

上述の通りHibernate は、「インピーダンス・ミスマッチ」を吸収し、さらに「煩雑」な作業を肩代わりしてくれる便利なものです。 ここでは、実際に何がどのように変わるのかを簡単に説明しておきたいと思います。

まず最初に、インピーダンス・ミスマッチの吸収についてです。 これまで、リレーショナルデータベースと、オブジェクト指向言語で開発を行う場合、 データベースへのコネクションを取得し、SQLを発行した結果得られる結果セットから オブジェクトを組み立てるという作業をしていました。Hibernate を導入すると、

  • コネクションの取得に関する記述
  • 発行するSQL文に関する記述
  • 結果セットからのオブジェクト(JavaBean)構築に関する記述

がソースコードから消え去ります。 代わりに、オブジェクトとリレーショナルデータベースの関係を Hibernate に教えるための 設定ファイル(マッピングファイル)が必要となります。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
  1. JavaBean を記述
  2. マッピングファイルの記述
    • 手書き
    • XDoclet でマッピングを生成
  3. hbm2ddl を使ってスキーマを生成
Bottom up
start with relational schema
すでにデータベースが存在する場合に利用する手法
  1. Middlegen GUI を利用して マッピングファイルを生成
  2. 必要であれば、マッピングファイルを編集
  3. hbm2java を使って POJO を生成
Middle out
start with mapping
  1. マッピングファイルを記述
  2. hbm2ddl を使ってデータベーススキーマを生成
  3. hbm2java を使って POJO を生成
Meet-in-Middle
start with both JavaBeans and relational schema
JavaBeans と データベーススキーマが既に存在する場合に利用する手法
  1. マッピングファイルを記述
  2. 適当に修正する。
あまりお勧めできません。

以上の全ての開発シナリオで各種ツールが開発を手助けしてくれることは間違いありません。 先ほどの、アプリケーションのランタイムにおけるクラスライブラリとしての働きとは異なり、 ここでは、アプリケーションを構築する際のツールとしての働きを見せます。

このように、Hibernate は、ランタイム時のクラスライブラリとしての役割と、 アプリケーション構築時のツールとしての役割という2つの側面を持つことを認識しておきましょう。

関連記事

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp