
[IT Architect連動企画]
連載:Hibernateで理解するO/Rマッピング(4)
簡単なプログラムでO/Rマッピングを体験
|
|
データベースアクセスプログラムの作成 |
■検索プログラムの作成
ではいよいよHibernateによるデータベースアクセスプログラムを実装し、動作させてみます。初めにデータ検索用のサンプルプログラムを作成します。「src」ディレクトリに次のFindSample.javaを作成してください。
| リスト4 FindSample.java import java.util.List; |
import entity.Emp; |
プログラムを実行すると、以下のような出力情報がコンソールに表示されます。
![]() |
| 画面2 サンプル実行結果 (クリックすると拡大します) |
Hibernateを使ってレコードを検索する方法はいくつかありますが、ここではnet.sf.hibernate.SessionインターフェイスのcreateCriteria()メソッドを使用しています。このメソッドの引数に対象テーブルの永続化クラスを指定することでnet.sf.hibernate.Criteriaオブジェクトを取得することができます。Criteriaオブジェクトはテーブルに対するクエリ用オブジェクトであり、このサンプルのような単純な全件検索のほかにExpressionオブジェクトを利用した条件検索も可能です。
Criteriaオブジェクトからはlist()メソッドを使って、レコードをListオブジェクトとして取得します。whileループの中で1件ずつEmpオブジェクトにキャストしながらgetterメソッドを呼び出してデータを取得しています。
■更新プログラムの作成
続いてEMPテーブルに対する更新を行ってみましょう。「src」ディレクトリに以下の「UpdateSample.java」を作成してください。
| リスト5 UpdateSample.java import entity.Emp; |
import net.sf.hibernate.HibernateException; |
このプログラムではEMPNOが「1」であるレコードのJOBを「Sales」に更新するプログラムです。更新前のレコードは以下のようになっています。
![]() |
| 画面3 更新前のレコード |
ここでUpdateSampleを実行してください。実行後JOBの値が「Architect」から「Sales」に変更されていることを確認できます。
![]() |
| 画面4 更新後のレコード |
データベースの更新処理ではトランザクション制御が必要になってきますが、HibernateではSessionオブジェクトのbeginTransaction()メソッドによって取得するnet.sf.hibernate.Transactionオブジェクトを使用してトランザクション制御を行います。
このプログラムで使用しているSessionオブジェクトのload()メソッドは、1件のレコードを主キーによって取り出す際に使用します。load()メソッドによって取得したEmpオブジェクトのsetterメソッドを使って更新する値を指定し、Sessionオブジェクトのupdate()メソッドを呼び出せば更新終了です。トランザクションをコミットすることを忘れないでください。
データを更新して永続化(データベースへの保存)するには通常SQLのUPDATE文を記述しますが、Hibernateを使用すればオブジェクトのプロパティを変更するだけの手軽さで更新処理が実行できることが体験できたと思います。
■挿入プログラムの作成
続いてデータ挿入のサンプルプログラムです。UpdateSample.javaと同様に、「src」ディレクトリにInsertSampleというクラスを作成しましょう。
| リスト6 InsertSample.java import entity.Emp; |
import net.sf.hibernate.HibernateException; |
このプログラムでは新しいEmpオブジェクトを生成し、各プロパティに対するsetterメソッドを用いてデータをセットしています。データをセットし終えた後はSessionオブジェクトのsave()メソッドを用いて永続化(データの挿入)を行っています。
プログラムを実行後、EMPテーブルを検索すると、新しいレコードが挿入されていることが確認できます。
![]() |
| 画面5 新しいレコード挿入後のEMPテーブル |
■削除プログラムの作成
続いて先ほど挿入したデータを削除します。次のようなDeleteSample.javaを作成してください(ほかのコードと同じ部分の記述は省略しています)。
| リスト7 DeleteSample.java |
…(中略 トランザクションの開始まではInsertSampleと同じ)… |
プログラムを実行後、テーブルを確認してください。先ほど挿入したデータが削除されていることが確認できますね。
|
|
まとめ |
今回は単純な「検索・更新・挿入・削除」の操作を行いました。O/Rマッピングフレームワークを利用することでテーブルのレコードをオブジェクトとして扱えるため、データ取得後にカラムごとの型を気にして取り出すような処理を記述する必要はありません。JDBCの記述と比較して非常にシンプルなプログラムになることが理解できたと思います。
またEntity Beanを利用したことがあれば、Hibernateが提供するO/Rマッピングの手軽さを特に実感できたのではないでしょうか。Entity BeanではEJBコンテナへのデプロイが必要ですが、Hibernateを使うとコンテナへのデプロイの必要はありません。そのためJ2EEアプリケーションサーバーを使ったWebアプリケーションのみならず、Javaを利用するアプリケーションすべてに使用することができます。またデプロイが必要ないためローカルでの単体テストが容易に実行できます。
このようにHibernateはO/Rマッピングを解決するソリューションであり、Entity Beanよりもシンプルな仕組みを持っています。次回はHibernateを実践的に使えるレベルまで解説を進めていきたいと思います。
| 2/2 |
|
INDEX |
||
| 第4回 簡単なプログラムでO/Rマッピングのメリットを体験 | ||
| Page1 接続ファイルの準備 マッピングファイルの準備 永続化Javaクラスの作成 |
||
| Page2 データベースアクセスプログラムの作成 |
||
| 筆者プロフィール |
| 山本 大(やまもと だい) 株式会社クロノスに勤務するITアーキテクト。甲南大学 経営学部 卒業。J2EE、.NETにこだわらずベストソリューションを提供できるマルチプラットフォームアーキテクトを目指す。『XMLマスター教科書 プロフェッショナル』(翔泳社)や雑誌などで執筆活動も行っている。 |
Hibernateで理解するO/Rマッピング バックナンバー
- 第1回 O/Rマッピングの役割とメリット
- 第2回 JavaにおけるO/Rマッピング
- 第3回 Hibernateを試すための準備
- 第4回 簡単なプログラムでO/Rマッピングのメリットを体験
- 第5回 SQLに似たHQLでリレーショナルデータを柔軟に検索
- 第6回 O/Rマッピングの導入効果を測る
| Java Solution全記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |










