Hibernate による O/R マッピング(その 1)
Hibernate は Java で利用できる 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 となる永続化クラスの作成から順にやっていきたいと思います。