Robbie DAOは、オープンソース(
LGPL)のフレームワークです。自由にダウンロードして、システム構築に使用することが可能です。
Robbie DAOはXML内にデータベース接続情報、実行Daoクラス、SQLを記述し、その情報からデータベース接続を行います。データベース接続の際には、そのバインド変数へのマッピングパラメータの内容から、動的にSQLを作成します。
最近、データベースアクセスを行う際に、O/Rマッピングのフレームワークを使用する傾向があります。しかし、現実にO/Rマッピングを使用すると、定義の複雑さや開発者の意図するSQLが実行されないなどの問題に直面します。
Robbie DAOは、複雑になるObjectとリレーションの関係をマッピングするのではなく、シンプルにObjectとSQLの関係をマッピングし、自由なSQLを記述することをコンセプトに作成されたフレームワークです。
O/Rマッピングでは実現しにくい外部結合、相関副問い合わせ、インラインビュー、HAVING句での副問い合わせなどをSQLとして記述することによって、業務要件に合うパフォーマンスの高いデータベースアクセスを行えることを目標としました。また、複雑なトランザクション要件でなければ、最小の実装でデータベースアクセスを行えます。
その結果、これまでの開発で培ったSQLの技術を使用して開発が行えるため、教育などの導入工数やデータベースアクセスにかかる実装工数を下げ、その分をビジネスロジックやビューの実装に充てることが可能でしょう。
Robbie DAOは実装にあたって、以下のコンポーネントおよびフレームワークの仕様と実装を参考にしています。
- Jakarta Commons DbUtils(オープンソース、仕様と実装を参考)
- S2Dao(オープンソース、仕様と実装を参考)
- iBATIS(オープンソース、仕様を参考)
- Hibernate(オープンソース、仕様を参考)
- Spring(オープンソース、仕様を参考)
- cSQLBuilder(EC-ONE社製、仕様を参考)
上記の中で最も影響を受けているのがiBATISとcSQLBuilderです。どちらのコンポーネントもSQLを開発者自身が定義し、かつ実行時に動的なSQLを作成することが可能です。
ただし、Robbie DAOではiBATISのような1対NのO/Rマッピング(+遅延ロード)やDAOのトランザクション管理のような高機能は実装されていません。できるだけシンプルな実装にしたかった事と、J2EEアプリケーションサーバから提供される機能と重複したくなかったからです。
また、cSQLBuilderではデータベース接続情報の管理を行っていないことと、呼び出すAPIが複雑であると感じたため、Robbie DAOではデータベースアクセスにかかわる総合的な機能を実装し、少ないステップ数でデータベースアクセスが実行できることを目標としました。
→ クイックスタート