メイン

2006年02月27日

iBatisでSELECT

iBatisの中のsqlMapsを使いデータベースの情報をSELECTで取得し、Javaのオブジェクトに格納しようと思います。
JDKは、jdk1.5.0_06、データベースはPostgres8.1を使ってみました。
iBatisは、2.1.5です。
iBatisのライブラリは、ここからダウンロードしてください。 ダウンロードしたファイルの中から、以下の2つを、クラスパスの通った場所に入れてください。
  • ibatis-common-2.jar
  • ibatis-sqlmap-2.jar
データベース接続用のJDBCドライバも忘れないように。 以上で最低限の準備は完了です。 iBatisはデータベースがないと試すこともできないので、とりあえず、以下のようなテーブル、データを準備しました。
IDNAME
1User1
2User2
3User3
IDとNAMEだけを持った単純なものです。 このテーブルの情報を取得していきます。

続きを読む "iBatisでSELECT" »

2006年02月20日

O/Rマッピングについて(1)

企業向けの情報システムや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というツールを紹介していきたいと思います。

続きを読む "O/Rマッピングについて(1)" »

タオソフトウェア

tao twitter
tao twitter
tao twitter

広告