SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

今からでも遅くない、JPAを学ぼう!

今からでも遅くない JPAを学ぼう!(前編)
O/Rマッピングフレームワークへの招待

O/Rマッパーを体験しましょう

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルコード (5.3 KB)

 Java Persistence API(JPA)を使ってオブジェクトの世界とリレーショナルの世界を結び付ける方法を一緒に学んでいきたいと考えています。前編ではJavaアプリケーションの簡単なサンプルアプリケーションを作成しつつ説明します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

JPAとは

 JPA(Java Persistence API)とはオブジェクトの世界からリレーショナルの世界へ、あるいはその逆への変換を行うためのAPIです。

 それでは何もJPAを使わずともHibernateやiBatisを既に使っているから必要ないのではと考えられた方も多いかと思います。確かに既にそれらのO/Rマッピングフレームワーク(以降、O/Rマッパー)を利用されているのであれば特に必要ないのかもしれません。

 そう思った方も少し待ってください。データベース製品の多様性を隠ぺいするためにJDBCが考えられたように、あるいはMOM製品の多様性を隠ぺいするためにJMSというAPIが考えられました。ところがO/Rマッパーの違いを隠ぺいするためのAPIは存在しなかったのです。iBatisを使用されている方にはあまり嬉しくないかもしれませんが、JPAの仕様作成の中心人物こそHibernateプロジェクトの創始者であるGavin King氏であり、Hibernateの血を色濃く受け継いでいます。

JDBCを使ってもO/Rマッピング

 直接JDBCを使っても、それも立派なO/Rマッピングです。筆者はこの方法が駄目だと主張するつもりは毛頭ありません。テーブル間の関連が非常に複雑である場合、JDBCのAPIを使って記述した方が楽な場合もあります。筆者が参画していたプロジェクトでもコストをかけないという制約のもとBI(Business Intelligence)に似たシステムを構築したことがありますが、このような場合、SQLを自由に駆使できるJDBCを使った方がO/Rマッパーを使うよりもむしろ楽だと感じました。

O/Rマッパーが必要な理由

 この理由は、既に言いつくされた感があるため言及する必要がないと感じています。それはオブジェクトモデルとリレーショナルモデル間のマッピングが難しいことにあります。インピーダンス・ミスマッチという言葉がよくつかわれますが、これを解消するための試みがHibernateなどのO/Rマッパーです。やはりプログラムの中にSQL文が混じりこまず、可読性が高まるということもあり、保守性も優れているという理由から支持されているのだと思います。プログラムをよりオブジェクト指向化するためのフレームワークを提供してくれるO/Rマッパーは非常に有難い存在と言えます。

よくある誤解

 O/RマッパーさえあればRDBの知識は必要ないと思っている方が多いようですが、コーディングの際にはRDBを意識する必要があります。意識しつつもSQLを直接書く必要がないだけの話です。ある程度RDBやSQLを知っていることがO/Rマッパーを使用するための前提であるとも言えます。常に過度な期待は禁物です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
JPAを使っての実装

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
今からでも遅くない、JPAを学ぼう!連載記事一覧
この記事の著者

川久保 智晴(カワクボ トモハル)

haruプログラミング教室(https://haru-idea.jp/)主宰。COBOL、FORTRANで13年、Javaを中心としたWeb開発で11年。3つしか言語知らないのかというとそうでもなく、sed/awk、Perl、Python, PHP,  C#, JavaScriptなども一時期は業...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5041 2010/04/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング