1. HOME »
  2. Java Tips »
  3. Enterprise

Enterprise Article

ソーシャルブックマークに登録 : Yahoo!ブックマークに登録 はてなブックマークに登録 del.icio.usに登録 newsing it!に登録 Buzzurlにブックマーク livedoorクリップに登録 Choix!にブックマーク イザ!ブックマーク

print 印刷用ページの表示

実開発でハマりがちなトラブルへの対処策、知っていると便利なTipsを伝授!

Hibernateトラブルシューティング

第1回 オブジェクトのライフ・サイクル管理にまつわるトラブル

近年、オープンソースのO/Rマッピング・フレームワークが広く使われ始めているが、その中でも特に高い人気を誇っているのが「Hibernate」だ。本企画では、今回から数回に渡り、実開発でHibernateを利用する際に陥りがちなトラブルへの対処策、そして知っていると便利なTipsを紹介していく。初回となる今回は、Hibernateによる永続化の基本であるオブジェクトのライフ・サイクルにまつわるトラブルとその対処策を紹介する。

2005年7月25日更新

text ●  伊敷 夢二 NTTコムウェア プロジェクト管理統括部 開発技術部門

Hibernateの概要

 今日、Javaで開発されたアプリケーションから利用するデータ・ソースには、一般にリレーショナル・データベース(RDB)が用いられている。このRDBの世界と、Javaで用いられるオブジェクト指向の世界との間には、設計思想に根本的な違いがある。そのため、俗に「インピーダンス・ミスマッチ(impedance mismatch)」と呼ばれる設計モデルのズレが生じる。このインピーダンス・ミスマッチを解消するためには、JavaオブジェクトとRDBとの間でデータ項目のマッピングを行い、ズレを吸収しなければならない。従来は、このマッピングをJDBCを直接用いて行っていたため、データベースへの接続を確立したり、データベースの検索結果をJavaオブジェクトに格納したりといった定型的な処理を、開発者がひたすら実装しなければならなかった。

 こうした定型的で煩雑な作業を軽減してくれるのが、最近急速に普及しつつあるオブジェクト/リレーショナル(O/R)マッピング・フレームワークだ。現在、有償または無償でさまざまなO/Rマッピング・フレームワークが提供されているが、その中でも特に高い人気を誇っているのが、ギャビン・キング氏によって開発されたHibernateである。このHibernateは、以下のような特徴を備えている。

●POJO(Plain Old Java Object:通常のJavaオブジェクト)をベースにしており、その設計も、また使い方もシンプルである
●豊富な機能を備える
●高いパフォーマンスを持つ
●Webや雑誌、書籍などで情報が豊富に提供されている
●米国JBossによる有償のサポートが受けられる


 Hibernateは、現在JCP(Java Community Process)で仕様策定が進められているEJB 3.0の永続化機構のベースになっていることもあり、日本国内でも、ここ1年ほどの間で急速にユーザーが増えてきた。

 なお、Hibernateを「Spring Framework」などのDI(Dependency Injection)コンテナに用意されたHibernateサポート・クラスと組み合わせて使うと、セッションやトランザクションの取得/クローズといった定型的処理を記述せずに済むため、より簡単に利用することが可能だ。この方法については、最近、雑誌や書籍などでも度々取り上げられているので、ご存じの方も多かろう。

 しかし、簡単に利用できるからといって、Hibernateのセッション管理機構などの基本的な仕組みを理解しないまま、単純に“JDBCの置き換え”として利用していると、思わぬトラブルに見舞われることがある。そのようなトラブルとしては、以下のようなものが挙げられる。

●オブジェクトのライフ・サイクル管理に関連するトラブル
●更新系処理の一括実行および例外処理に関連するトラブル
●Hibernateと他のソフトウェアの組み合わせに関するトラブル


 本企画の目的は、こうしたトラブルへの対処策を提示することにある。これらのうち、今回は、Hibernateにおけるオブジェクトのライフ・サイクル管理の仕組みを正しく理解していないために起こるトラブルとその対処策について、サンプル・プログラムを示しながら解説していく。

ページの先頭へ戻る