iBatisでSELECT
JDKは、jdk1.5.0_06、データベースはPostgres8.1を使ってみました。
iBatisは、2.1.5です。
iBatisのライブラリは、ここからダウンロードしてください。 ダウンロードしたファイルの中から、以下の2つを、クラスパスの通った場所に入れてください。
- ibatis-common-2.jar
- ibatis-sqlmap-2.jar
| ID | NAME |
|---|---|
| 1 | User1 |
| 2 | User2 |
| 3 | User3 |
| ID | NAME |
|---|---|
| 1 | User1 |
| 2 | User2 |
| 3 | User3 |
企業向けの情報システムやWebアプリケーションでは、ほとんどの場合、基本の機能としてデータの出し入れがあります。 そのデータ自体は、リレーショナルデータベース(以下RDB)内に格納されていることが多く、システムを構築する上でRDBに対するアクセス方法は避けては通れないものとなっています。
Javaなどでリレーショナルデータベース(以下RDB)を利用する場合、一般的に以下の点が問題としてあげられます。
インピーダンスミスマッチ
RDBとオブジェクト指向言語の設計思想の相違から発生する問題。
通常、クラス図等で表現されたデータをそのままRDBに入れることができない。
RDB<->オブジェクト指向言語間の双方向の変換(マッピング)処理が必要となるデータモデルの違いをいう。
このような問題を解決する手段として「O/Rマッピング(Object/Relation Mapping)」というのがあり、JavaのO/Rマッピングフレームワークの代表的なものとしては、
などがあげられます。
ほとんどの場合、XMLにマッピング情報の定義(テーブルとクラスのマッピング、フィールドとカラムのマッピングなど)を記述することで、JavaのオブジェクトとRDBの間のマッピングを自動的に実行してくれるようになり、 提供されているAPIを通じて、「検索」「更新」などが実行できるようになります。
プロダクトによっては、内部的にSQLを組み立てて発行してくれるため、SQLをまったく記述せずにRDBにアクセスすることも可能ですし、ツールが提供されておりクラスのソースコードを自動生成してくれるようなものもあります。
マッピングを設定ファイルで行ってくれるので、RDBのスキーマ定義が変更になった場合などは、マッピングファイルを更新すればよいのです。
といっても、マッピングファイルを作成する作業量の増加等、プログラマーの負担も増えるわけですが。。。
実際問題として、O/Rマッピングツールを利用したからといって、100%問題が解決できるというものでもありませんし、自動的にSQLを生成してくれるものを利用したとしても、デバッグ、パフォーマンスチューニング等でSQLがまったく不要になるわけではありません。
それに、RDBを利用するアプリケーションを開発しているのであれば、SQL(RDB)に詳しい担当者もいるのが普通でしょう。
実際、自動的に発行されるSQLがもっとも良いSQLであるとは思えませんから、パフォーマンスに重点を置くのであれば、SQLの最適化は必要ですし、RDB毎のネイティブなSQLを記述したい局面も数多くあると思います。
結局はアプリケーションのレベル、用途等によって、マッピングツールを利用するのか判断していく必要があります。
上記のようなことを踏まえたうえで、O/Rマッピングツールを利用するとなった場合、それぞれ特徴があるので、その選定も必要となります。過去の実績で開発メンバーがあるツールを利用した経験があるなら、それを使うのも一案ですし、何らかの不満がでたのであれば、その不満を解できるプロダクトを選択する方法もあるでしょう。
ここではiBatisというツールを紹介していきたいと思います。