DBFluteの紹介
DBFlute初めての方が真っ先に読むページです。
- DBFluteとは?
- 現場にフィットすることを重視
- 自動生成ドリブンでDB変更に強い
- バランス重視のDBアクセスI/F
- 全体最適のための現場フィット機能
- (実行時の)パフォーマンス考慮
- DBFluteの世界へようこそ
- Thanks, Frameworks!
DBFluteとは?
Apache Torque と S2Dao を参考に、現場にフィットすることを重視 したO/Rマッパです。
- 自動生成ドリブンでDB変更に強い
- バランス重視のDBアクセスI/F
- 全体最適するための現場フィットな機能
※ここでいう現場とは、主に複数人で行うシステム開発の現場を指します。
現場にフィットすることを重視
ある時、Apache Torqueを使ったプロジェクトに参加しました。テーブルのメタ情報からクラスを自動生成する DB変更にとても強い仕組み に感動しました。一方で、複雑なSQLを発行したいときに困窮しました。その後、S2Daoを知り、2Way-SQL の素晴らしさに感動しました。一方で、DB変更があった場合に対処するのが大変そうだという感想を抱きました。 その時、この二つの特徴を組み合わせれば 現場にフィット するのではないかと思い、DBFluteの歴史が始まりました。
DBFluteは公開前の半年、公開後の3年半のおよそ丸4年(2006年から2010年にかけて)、 実際の開発現場で利用されつつ作者自身もその現場に入り、利用者の声をダイレクトに受け止め現場への対応を積み重ねてきました。 それゆえ、DBFluteはフレームワークの要件定義を現場から行っています。どういった機能が求められててどういった仕様が良いのか、 トップダウンではなくボトムアップで設計されており、現場にフィットするための多くの機能を備えます。 (DBFluteの成長を支えて下さったプロジェクトの方々には、心から感謝します)
自動生成ドリブンでDB変更に強い
データベースのメタデータ(テーブル構造やFK制約など)をもとにDBアクセスするためのクラス(Entityなど)を自動生成し、 それらクラスを使うことによってタイプセーフな実装が可能になり、開発途中や運用後のDB変更の影響範囲がコンパイル時に検知できるようになります。
自動生成されるクラスはジェネレーションギャップパターンの形で生成されるため、自動生成クラスに独自のメソッドを追加しても再自動生成が可能です。 DBが変更されたら再自動生成してコンパイルエラーとして現れる影響範囲を直せば (コンパイルが通るようにすれば)良いのです。
バランス重視のDBアクセスI/F
Apache Torqueのアーキテクチャを参考としたタイプセーフなSQL自動生成API ConditionBean を提供し、 さらにS2Daoから2Way-SQLを 外だしSQL(OutsideSql) として継承し、その適材適所のバランスを重視しています。
- 簡単(定型的)なSQL
- ConditionBean
- 複雑(非定型)なSQL
- 外だしSQL(OutsideSql) *2Way-SQL
全体最適のための現場フィット機能
開発現場とO/Rマッパの間には必ず隙間が存在します。大抵はその隙間を埋めるのは各ディベロッパーで、 開発規模が大きければ大きいほどその無駄な作業がどんどん横展開されていくものです。
DBFluteでは現場フィットな機能を使って開発を全体最適し、それら各ディベロッパーの無駄な負荷を軽減します。 他のO/Rマッパよりはアーキテクトの仕事量とスキルが求められるかもしれませんが、その分を各ディベロッパーに 業務仕様の把握と実現そしてテストに集中 してもらうことで、システム全体の品質の向上を望むことが可能です。
(実行時の)パフォーマンス考慮
いくら実装のパフォーマンスが良くても、実行時(ランタイム)のパフォーマンスが良くなければ、それは採用できないO/Rマッパです。 O/Rマッパは、DBアクセス実装の道具というだけでなく、アプリケーションの一部品として組み込まれるものだからです。 DBFluteでは、実行時のパフォーマンスに関しても細心の注意を払い、よく言われる "O/Rマッパはパフォーマンスが心配" と言われる懸念を払拭します。
DBFluteの世界へようこそ
あらためて、DBFluteの世界へようこそ!
概念的な説明だけでは、理解が漠然としているでしょう。ぜひとも具体的な機能を見ながらDBFluteを知って頂けたらと思います。 チュートリアルを用意しております。これらのページを入り口にDBFluteの理解をぜひ深めていって下さい。
では、いってらっしゃいませ!
Thanks, Frameworks!
DBFluteの開発に欠かせなかったフレームワークです。
- Apache Torque
- S2Dao
DBFluteは、Torque の自動生成の仕組みをベースに作られています。また、2Way-SQL の実現には S2Dao のロジックを参考にさせてもらっています。これらのフレームワークがなければ今の DBFlute はないでしょう。
