O/Rマッピングは、従来の煩雑なデータベースに関する処理の記述をスマートにし、柔軟なアプリケーションの構築を可能にします。本連載ではオープンソースのO/Rマッピングフレームワーク「Hibernate」を用いてO/Rマッピングの基礎を解説します。そしてさらに、J2EEアプリケーションへの実践的な適用方法とそのメリットも紹介していきます。(編集局)
前回、前々回までの内容では「O/Rマッピングの概要」と「Entity Beanの問題点」を解説しました。今回からは「Hibernate」という無償で利用できるO/Rマッピングフレームワークを使い、O/Rマッピングを実際に試して理解を深めることにしましょう。
第3回は、O/Rマッピングを試すための環境を作ります。本連載では、サンプルアプリケーションを簡単に試すために、統合開発環境のEclipseを利用します。また、データベースにはMySQLを使用します。
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に近い設計になることが予想されます。
この話題は将来のJ2EE仕様に大きく影響を及ぼすビッグニュースですが、本稿の趣旨からはそれてしまうため詳細には言及しません。しかし、このニュースから、Hibernateが今後のJ2EE開発に関連するテクノロジとして重要なものになることが想定できます。
実際のシステム開発で導入するフレームワークを選定する際には、シビアで複雑な要件下での利用に耐え得るかどうかが問われることになります。特にデータベース操作や検索に対する要求の高さは顕著です。その中でHibernateが人気を集めるのは以下のような理由があります。
これだけのメリットがありながらオープンソースとして提供されているわけですから、その人気の高さもうなずけます。
上記のメリットの中でもドキュメントが充実していることや柔軟なアーキテクチャを採用していることは、実践的で複雑な要件に柔軟に対応するには非常に重要なポイントです。Hibernateのドキュメントはすべて英語ですが、本当に困難な状況に直面したときに「公式なドキュメント」としてまとまった情報が存在することは、開発者の大きな手助けになることでしょう。またドキュメントの日本語翻訳プロジェクトも進められています。
ここまでのまとめ:「Hibernateの人気の理由」
次回から実際に簡単なサンプルを利用して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で新しいプロジェクト「HibernateProject」を作成し、ディレクトリを以下のように作成してください。
ソース用ディレクトリの設定「HibernateProject /src」
プロジェクトを右クリックして[HibernateProjectのプロパティー]ダイアログを開き、[Javaのビルドパス]から、[ソース]タブを選択して「HibernateProject/src」をソースディレクトリに設定してください(画面2)。
クラスファイルの出力ディレクトリの設定「HibernateProject/build/classes」
ソース用ディレクトリを設定した同じ画面で、[デフォルトの出力フォルダー]を「HibernateProject/build/classes」に設定します(画面2)。
ライブラリ用ディレクトリ「HibernateProject /build/lib」
「HibernateProject/ build/lib」ディレクトリにはHibernateやJDBCドライバなどのJARファイルを格納します。
設定ファイル用ディレクトリ「HibernateProject/config」
「HibernateProject/config」ディレクトリには、Hibernateが使用する以下のファイルを配置します。
Hibernateディストリビューションに含まれる「hibernate2.jar」ファイルを、プロジェクトの「build/lib」ディレクトリに配置します。
データベース接続のための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とされているものを選択してください)。
上記のライブラリを「build/lib」ディレクトリにコピーしてください。また、Hibernateディストリビューションの「hibernate-2.1/src」ディレクトリに「log4j.properties」という名称のファイルがあり、Log4jを使う際のログ出力の設定が記述されています。同じログ出力定義をXMLでも定義することが可能ですが、このサンプルではHibernateで提供されているものを使用します。この「log4j.properties」を先ほど作成した「HibernateProject/config」ディレクトリにコピーしておきましょう。
「build/lib」ディレクトリに配置したjarファイルをクラスパスに設定します。またHibernateが使用する設定ファイルは、クラスパスに設定されているディレクトリ上に配置する必要があるため「HibernateProject/config」ディレクトリにもクラスパスを通します。これらの設定を以下の手順で行ってください。
Eclipseパッケージエクスプローラーのプロジェクト名「HibernateProject」上で右クリックしてプロパティダイアログを開き、[Javaのビルドパス]から[ライブラリー]タブを選択してください。
[JARの追加]ボタンをクリックして、「HibernateProject /lib」ディレクトリに配置したJARファイルをすべて選択して[OK]ボタンを押します。
次に、[クラスフォルダーの追加]ボタンで「config」ディレクトリを選択して[OK]ボタンを押します。
[プロパティ]ダイアログを[OK]ボタンで閉じてください。
ここまでで、O/Rマッピングを試す環境の準備が整いました。次回はいよいよ、簡単なサンプルを使い、データベースアクセスの基本的な処理である1つのテーブルへの「検索・更新・登録・削除」を行ってみます。
山本 大(やまもと だい)
株式会社クロノスに勤務するITアーキテクト。甲南大学 経営学部 卒業。J2EE、.NETにこだわらずベストソリューションを提供できるマルチプラットフォームアーキテクトを目指す。『XMLマスター教科書 プロフェッショナル』(翔泳社)や雑誌などで執筆活動も行っている。
Copyright © ITmedia, Inc. All Rights Reserved.