Hibernate による O/R マッピング(その 1)

HibernateJava で利用できる ORM のひとつで、世界的にもっとも利用されているものです。

以前紹介した MyBatis では、実際に問い合わせを行う SQL を自分で書く必要がありました。しかし問い合わせるデータベースの種類によって微妙に変わることがあります(古いバージョンの Oracle Database では JOIN 句がサポートされていない、SQL Server では USING 句がサポートされていない、etc...)。Hibernate ではそう言った「方言」の違いは気にする必要がありません。独自の HQL(Hibernate Query Language) という問い合わせ言語を用いて問い合わせを行うことができます。今回は例の menudb を用いて

  • 顧客マスタの全データを一覧で表示する
  • 顧客マスタから主キーである顧客 ID を指定してデータを検索する
  • 商品マスタから商品名の一部を入力して HQL によるあいまい検索によってデータを検索し検索結果の一覧を表示する

の三つをやってみたいと思います。

Hibernate の入手

以下のサイトから入手できます。最新版は 4.2.1.Final です。
Hibernate - JBoss Community

Web アプリケーションで Hibernate を使う

ダウンロードした zip ファイルの lib フォルダの中に required というフォルダがあると思います。その中にある jar ファイルを全て WEB-INF\lib フォルダにコピーすることで Hibernate を利用できます。

hibernate.cfg.xml の作成

Hibernate を利用する際の設定ファイルである hibernate.cfg.xml を作成します。Hibernate Tools が Eclipse にインストールされている(前回 JBoss Tools をインストールしていれば)ので、Hibernate パースペクティブを開いてファイルを自動生成します。ただし自動生成されたファイルはそのままだと DTD の URL が古いものになっているので修正を掛けます。最終的に以下のようになれば O.K. です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/menudb</property>
    <property name="hibernate.connection.username">scott</property>
    <property name="hibernate.connection.password">tiger</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <mapping resource="hibernate.hbm.xml" />
  </session-factory>
</hibernate-configuration>

mapping のところは手動で追加します。ファイル自体は後で作りますので、今はまだなくても問題ありません。

これで下準備ができましたので、次回以降 Model となる永続化クラスの作成から順にやっていきたいと思います。