DBFluteの紹介

DBFluteとは?

現場指向のO/Rマッパです。

現場指向

DBFluteの大きな特徴として挙げられるのは、「現場指向」という点です。

DBFluteは、公開前「半年」・公開後「2年半」のおよそ3年間(2006年初頭から2009年初頭にかけて)、実際の開発現場で利用されつつ、 ときには作者も実際にその現場に入り、利用者の声を直に聞き、作者自身も利用者となってその妥当性を吟味しながら仕様調整・機能追加などのメンテを行い、現場への対応を積み重ねてきました。

それゆえ、DBFluteはフレームワークの要件定義を現場から行っています。どういった機能が求められててどういった仕様が良いのか、トップダウンではなくボトムアップで設計されており、「現場にフィットすること」を重要視しています。

DBFluteの成長を支えて下さったプロジェクトの方々には、心から感謝します。

自動生成

DBFluteは、自動生成型のO/Rマッパであり「DB変更に強い」をポリシーとしています。

データベースのメタ情報(テーブル構造やFK制約など)を取得して、その情報をもとにDBアクセスするためのクラスを自動生成します(概念図はこちら)。 後述する「DBアクセスI/F」で紹介されますが、自動生成を利用することによりIDEでテーブル名やカラム名などの補完が可能な完全タイプセーフなDBアクセスI/F(ConditionBean)が実現可能となります。 プログラム上でのSQL組み立てを非常に安全で速く実装することが可能です。

さらには完全タイプセーフであることにより、開発途中や運用後のDB変更が「コンパイルエラーで検知」することが可能という大きなメリットを得ることができます。 自動生成されるクラスはジェネレーションギャップパターンの形で生成されるため、自動生成クラスに独自のメソッドを追加しても再自動生成が可能です。 DBが変更されたら再自動生成してコンパイルエラーとして現れる影響範囲を直せば(コンパイルが通るようにすれば)良いのです。

自動生成するクラスはテーブル対応のものだけではありません。 外だしSQL(OutsideSql)に対応するクラスやストアドプロシージャ対応のクラスなども生成し(概念図はこちら)、 呼び出し時や結果データのマッピング時などのヒューマンエラーを無くします。 徹底して安全指向を貫いております。

自動生成のメリットはまだまだ尽きません。O/Rマッパでよくある痛い話題として、 検索結果のデータをEntityに詰める際のリフレクションコストがありますが、DBFluteではマッピングするクラス自体も自動生成するため、 リフレクションコストによるパフォーマンス劣化が抑えられています。

全体最適化

現場指向な全体最適化をポリシーとしています。具体的には共通カラム(CommonColumn)や区分値(Classification)など非常に現場寄りな全体最適をする機能を備え、 各ディベロッパーの無駄な負荷を軽減します。他のO/Rマッパよりはアーキテクト(DBAや実装リーダなど)の仕事量とスキルが求められるかもしれません。 しかしその分、各ディベロッパーには「業務仕様の把握と実現そしてテストに集中」してもらうことで、システム全体の品質を向上を望むことが可能です。 中規模以上(基準に個人差がありますが)の開発において、その大きなメリットを享受することができるでしょう。

DBアクセスI/F

S2Daoから2Way-SQLを「外だしSQL(OutsideSql)」として継承しつつ、 さらに完全タイプセーフなSQL自動生成機能「ConditionBean」を提供し、その適材適所のバランスを重視しています。

さらに詳しくはこちら

DBFluteの世界へようこそ

あらためて、DBFluteの世界へようこそ!

概念的な説明だけでは、理解が漠然としているでしょう。 ぜひとも具体的な機能を見ながらDBFluteを知って頂けたらと思います。 (ドキュメント用に単純化された)ロールごとにチュートリアルを用意しております。これらのページを入り口にDBFluteの理解をぜひ深めていって下さい。

では、いってらっしゃいませ!