Hibernateを試すための準備Hibernateで理解するO/Rマッピング(3)

O/Rマッピングは、従来の煩雑なデータベースに関する処理の記述をスマートにし、柔軟なアプリケーションの構築を可能にします。本連載ではオープンソースのO/Rマッピングフレームワーク「Hibernate」を用いてO/Rマッピングの基礎を解説します。そしてさらに、J2EEアプリケーションへの実践的な適用方法とそのメリットも紹介していきます。(編集局)

» 2004年07月16日 00時00分 公開
[山本大株式会社クロノス]

Hibernateと無償ソフトウェアでO/Rマッピングを体験

本記事は、「ITアーキテクト」と@ITの各フォーラムが展開する、分析/設計工程に焦点を絞った『ITアーキテクト連動企画』記事です。


 前回前々回までの内容では「O/Rマッピングの概要」と「Entity Beanの問題点」を解説しました。今回からは「Hibernate」という無償で利用できるO/Rマッピングフレームワークを使い、O/Rマッピングを実際に試して理解を深めることにしましょう。

 第3回は、O/Rマッピングを試すための環境を作ります。本連載では、サンプルアプリケーションを簡単に試すために、統合開発環境のEclipseを利用します。また、データベースにはMySQLを使用します。

Hibernateを取り巻く環境と人気の理由

 Hibernate( http://www.hibernate.org/ )はGavin King氏を中心とした「Hibernateチーム」が開発しているJavaのO/Rマッピングフレームワークであり、無償での「商用利用」が可能なLGPL ライセンスで提供されているオープンソースのソフトウェアです。

 Hibernateは全世界で広く利用されており、数あるO/Rマッピングフレームワークの中でも世界的に最も人気のある製品の1つとして数えられています。

LGPLライセンスとは?

もともとは「Gnu Library General Public License」という名前で公開されたライブラリ用のGPLライセンスです。現在は「Library」の部分が「Lesser」(重要でない、小さいといった意味)に変更されており、ソースを公開しないソフトウェアに組み込んで利用することが可能です。


 Hibernateを取り巻く環境は、このところ非常に目まぐるしく動いています。まず2003年9月18日にHibernate制作の中心人物であるGavin King氏がJBoss Groupに雇い入れられることになりました。現在JBoss Groupの支援によってHibernateの機能と性能の向上、ドキュメントの充実が急速に進んでいます。

 次いでGavin King氏が「JDO Expert Group」に参画し、主にJDO 2.0の仕様の策定を行うという情報がHibernateのコミュニティで公表されました。さらに最近ではGavin King氏がEJB 3.0 Expert Groupに参加したというニュースもありました。これによってEJB 3.0のEntity BeanもHibernateに近い設計になることが予想されます。

Gavin King氏のBlog

この話題は将来のJ2EE仕様に大きく影響を及ぼすビッグニュースですが、本稿の趣旨からはそれてしまうため詳細には言及しません。しかし、このニュースから、Hibernateが今後のJ2EE開発に関連するテクノロジとして重要なものになることが想定できます。


 実際のシステム開発で導入するフレームワークを選定する際には、シビアで複雑な要件下での利用に耐え得るかどうかが問われることになります。特にデータベース操作や検索に対する要求の高さは顕著です。その中でHibernateが人気を集めるのは以下のような理由があります。

  • 柔軟性に富んだ強力なO/Rマッピングの方法を提供
  • Entity Beanが持つデメリットのクリア
  • 公式ドキュメントの充実
  • 開発者が公式サイトにて「ultra-high performance」と公言するほどのパフォーマンスの良さ

 これだけのメリットがありながらオープンソースとして提供されているわけですから、その人気の高さもうなずけます。

 上記のメリットの中でもドキュメントが充実していることや柔軟なアーキテクチャを採用していることは、実践的で複雑な要件に柔軟に対応するには非常に重要なポイントです。Hibernateのドキュメントはすべて英語ですが、本当に困難な状況に直面したときに「公式なドキュメント」としてまとまった情報が存在することは、開発者の大きな手助けになることでしょう。またドキュメントの日本語翻訳プロジェクトも進められています。

ここまでのまとめ:「Hibernateの人気の理由」

  • 柔軟性に富んだアーキテクチャ
  • 公式ドキュメントの充実
  • 高いパフォーマンス
  • JBoss Groupの支援

環境の準備

 次回から実際に簡単なサンプルを利用してHibernateのO/Rマッピングを試すために、今回は環境の構築を行います。

 最初に開発に必要な環境を準備します。本連載ではRDBMSにMySQLを、統合開発環境(IDE)としてEclipseを使用しています(MySQLやEclipseのセットアップに関する詳細は本稿では説明していません)。

 なおサンプルプログラムの検証に用いた環境の一覧を下表にまとめました。

ソフトウェア 名称
Hibernate hibernate 2.1.4
OS Windows XP Professional
データベース MySQL 4.0.20
JDBCドライバ mysql-connector-java-3.0.14-production-bin.jar
IDE eclipse 2.1.2
サンプルプログラムの実行環境

 それぞれのソフトウェアのセットアップは以下に従って行ってください。

MySQL
MySQLをhttp://www.mysql.com/よりダウンロードしてセットアップしてください。デフォルトのデータベース「test」内にテーブルを作成してサンプルプログラムを動かします。作成するテーブルに関しては後述します。また、MySQL用JDBCドライバ「MySQL Connector/J」をhttp://www.mysql.com/products/connector/j/より取得しておいてください。

Eclipse
Eclipse(http://www.eclipse.org/)をダウンロードしてセットアップしておきます。サンプルではEclipseを「C:\eclipse」にセットアップしています。セットアップに関する詳しい解説は「連載:Eclipseを使おう!」または「連載:Eclipseではじめるプログラミング」を参照してください。

Hibernate
HibernateのインストールはHibernateのディストリビューションをダウンロード・解凍し、ディストリビューションに含まれるhibernate2.jarといくつかのjarファイルをプロジェクトに配置するだけです。インストールの詳細に関しては後述しますので、まずはHibernateのディストリビューションをダウンロードしておきましょう(http://www.hibernate.org/)。

 執筆時点での最新版はHibernate-2.1.4であり、この記事のサンプルプログラムでは「hibernate-2.1.4.zip」をダウンロードしています。なお、Hibernateは頻繁に更新されていますので、今回使用したバージョンと異なるバージョンを使用した場合、サンプルどおりに動作しない可能性があることを了承ください。

Eclipseプロジェクトの作成

 今回は、Eclipseのプロジェクトの作成までを行います。Eclipseで新しいプロジェクト「HibernateProject」を作成し、ディレクトリを以下のように作成してください。

画面1 サンプルプロジェクトのディレクトリ構成 画面1 サンプルプロジェクトのディレクトリ構成

ソース用ディレクトリの設定「HibernateProject /src」
プロジェクトを右クリックして[HibernateProjectのプロパティー]ダイアログを開き、[Javaのビルドパス]から、[ソース]タブを選択して「HibernateProject/src」をソースディレクトリに設定してください(画面2)。

クラスファイルの出力ディレクトリの設定「HibernateProject/build/classes」
ソース用ディレクトリを設定した同じ画面で、[デフォルトの出力フォルダー]を「HibernateProject/build/classes」に設定します(画面2)。

画面2 ソース・フォルダと出力フォルダの設定 画面2 ソース・フォルダと出力フォルダの設定

ライブラリ用ディレクトリ「HibernateProject /build/lib
「HibernateProject/ build/lib」ディレクトリにはHibernateやJDBCドライバなどのJARファイルを格納します。

設定ファイル用ディレクトリ「HibernateProject/config」
「HibernateProject/config」ディレクトリには、Hibernateが使用する以下のファイルを配置します。

  • データベースへの接続定義などを記述した設定ファイル
  • テーブルカラムとのマッピング定義を記述したファイル
  • ログ出力に使用するライブラリであるLog4jの設定ファイル

Hibernateライブラリのコピー

 Hibernateディストリビューションに含まれる「hibernate2.jar」ファイルを、プロジェクトの「build/lib」ディレクトリに配置します。

JDBCドライバのコピー

 データベース接続のためのJDBCドライバをクラスパスに設定します。今回のケースでは、mysql-connector-java-3.0.14-production-bin.jar(MySQL用JDBCドライバ)を「build/lib」ディレクトリにコピーします。

サードパーティライブラリのコピー

 Hibernateは、実行時にいくつかのサードパーティ製ライブラリを必要とします。それらはすべてHibernateのディストリビューションの「hibernate-2.1/lib」ディレクトリに格納されています。Hibernateを動作させるために必須のライブラリを以下に示します(これらのライブラリはHibernateのバージョンによっては変更や追加が行われることがあります。バージョンごとの必須ライブラリはHibernateのディストリビューションに含まれる「hibernate-2.1/lib/README.txt」を確認してrequiredとされているものを選択してください)。

  • cglib-full.jar
  • commons -collections.jar
  • commons -logging.jar
  • dom4j.jar
  • jdbc2_0-stdext.jar
  • ehcache.jar
  • jta.jar
  • odmg.jar

 上記のライブラリを「build/lib」ディレクトリにコピーしてください。また、Hibernateディストリビューションの「hibernate-2.1/src」ディレクトリに「log4j.properties」という名称のファイルがあり、Log4jを使う際のログ出力の設定が記述されています。同じログ出力定義をXMLでも定義することが可能ですが、このサンプルではHibernateで提供されているものを使用します。この「log4j.properties」を先ほど作成した「HibernateProject/config」ディレクトリにコピーしておきましょう。

画面3 必要なライブラリおよびファイルをコピー 画面3 必要なライブラリおよびファイルをコピー

JARビルドパスとクラスフォルダーの設定

 「build/lib」ディレクトリに配置したjarファイルをクラスパスに設定します。またHibernateが使用する設定ファイルは、クラスパスに設定されているディレクトリ上に配置する必要があるため「HibernateProject/config」ディレクトリにもクラスパスを通します。これらの設定を以下の手順で行ってください。

 Eclipseパッケージエクスプローラーのプロジェクト名「HibernateProject」上で右クリックしてプロパティダイアログを開き、[Javaのビルドパス]から[ライブラリー]タブを選択してください。

画面4 [ライブラリー]タブを選択 画面4 [ライブラリー]タブを選択

 [JARの追加]ボタンをクリックして、「HibernateProject /lib」ディレクトリに配置したJARファイルをすべて選択して[OK]ボタンを押します。

画面5 JARファイルをすべて追加 画面5 JARファイルをすべて追加

 次に、[クラスフォルダーの追加]ボタンで「config」ディレクトリを選択して[OK]ボタンを押します。

画面6 [config]ディレクトリを選択 画面6 [config]ディレクトリを選択

 [プロパティ]ダイアログを[OK]ボタンで閉じてください。

 ここまでで、O/Rマッピングを試す環境の準備が整いました。次回はいよいよ、簡単なサンプルを使い、データベースアクセスの基本的な処理である1つのテーブルへの「検索・更新・登録・削除」を行ってみます。

筆者紹介

株式会社クロノス

山本 大(やまもと だい)

株式会社クロノスに勤務するITアーキテクト。甲南大学 経営学部 卒業。J2EE、.NETにこだわらずベストソリューションを提供できるマルチプラットフォームアーキテクトを目指す。『XMLマスター教科書 プロフェッショナル』(翔泳社)や雑誌などで執筆活動も行っている。



Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。