top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
blancoDb Enterprise Edition (EE) 初の正式版をリリースします。
blancoDb Enterprise Edition (以降 blancoDb) について、初の正式版となる 1.0.0をリリースします。
R/Oマッピングというソフトウェアの特徴がら、ある程度以上のJava/JDBC/SQLのスキル・実務経験を持った方にしか価値が無いうえに理解も難しいと考えます。くわえて、まだblancoDbのドキュメントは基本的に不足しています。よほど条件がそろわないとblancoDbの試用は難しいことでしょう。しばらくは blancoDbは変更を凍結するつもりです。ですので、奇特な方の手による blancoDb試用レポートのたぐいのWebページが登場してくれるのを期待します… (苦笑)
一方で、R/Oマッピングが役立つようなタイプのソフトウェア開発現場においては、blancoDbは絶大な効果を発揮するものと考えます。ある程度以上の規模の特定のシステム開発現場において、生産性向上・保守性向上の両面から確実で飛躍的な改善効果をもたらしてくれることでしょう。
※スナップショット取得の目的もかねて、blancoDbの説明文を ここに転載しておきます。
blancoDb Enterprise Edition (以降 blancoDb)は Java言語/JDBC用の R/Oマッピングツール実装の一つです。
理念・思想
blancoDbは下記のような理念および思想を特徴としています。
低機能でありつづける JDBCドライバが提供する低水準APIの機能性・特徴を妨害・阻害することなく、そのままJavaソースコードにマッピングします。このことにより、リレーショナルデータベースの機能および性能を最大限引き出すことが出来ます。ツールとしては低機能であることにより、高性能に動作させることができ、またJDBCの機能を最大限利用することができます。もちろんスクロールカーソルやNULL許容列対応など最低限の機能は当然サポートします。
自由度の低さ リレーショナルデータベース上の型をJavaの特定のオブジェクト型に強制的にマッピングを行います。型マップに関しては極力自由度を排除しています。このことによりJDBCドライバの実装に起因したJDBCレベルでの型マッピングによる不具合発生を最小限にとどめることが出来ます。加えて自由度が低いために 極めて少ない設定によりマッピングを自動生成することができます。原則として列名や型情報はJDBCドライバから得られるメタ情報を活用して自動的に決定します。自由度の低さゆえに非常に安全に動作させることもできます。型マップ済みのJavaクラスが提供されることにより、実行時エラーの可能性を激減させます。多くの場合 自由度の高さは設定を増やして不確実性を押し上げ、各種トラブルを誘発するのです。
カスタマイズの容易さ (ただし現バージョンでは 未達部分が含まれる) カスタマイズの容易さを理念としています。基幹系・大規模開発で利用される際にはカスタマイズが発生することでしょう。生成されるソースコードにいろいろ手が加わるのはもちろんのこと、blancoDbのソースコードそのものにもカスタマイズが入ることを想定しています。そういったカスタマイズのしやすさを実現するための方法として、機能を増加させず自由度を増やさずblancoDbそのものの規模の肥大化を抑制している側面もあります。blancoDbの規模が小さいことはカスタマイズ実施後のテスト規模を抑制することも出来ます。
特徴
ごく普通のSQL文が そのまま利用できます。 ターゲットRDB向けに準備されたSQL文が そのまま利用できます。当然のことですが、複数表を結合した検索が可能です。ある程度複雑なサブクエリやUNION付きSQL文なども、あたりまえのことですが、ごく当然のものとして利用できます。SQL文という観点では blancoDbは極めて自由度が高くなるよう設計されています。
ごく普通にJDBC APIをラッピングしています。 ごく普通の JDBCプログラミング・ソースコードが自動生成されます。このため既存のJDBCノウハウおよびスキルが転用でき、学習コストがとても低くなっています。
Excelブック形式のSQL定義書に SQL文とSQL文の付加情報を記載することにより入力メタ情報を設定します。 Excelおよびその互換ソフトを用いるだけで入力メタ情報を設定できます。XMLファイルは利用しますが、単に中間ファイルとしてのみ利用しています。
よくありがちなJDBCプログラミングにおけるバグを予防するための仕組みをもっています。
一意制約違反は特別な例外として扱うことにより、一意制約違反の処理忘れバグを予防できます。
検索・実行結果が1件であるSQL文について、実行結果が1件でない場合には例外を発生させることよにり処理忘れバグを予防できます。
ステートメントのクローズ忘れについて、これを検知して警告を出すことによりクローズ忘れバグを予防できます。
SQLインジェクションを発生させにくい構造になっています。blancoDbを導入することは SQLインジェクションの予防および対策として非常に有効です。
リレーショナルデータベースのカーソルが利用できます。
(リレーショナルデータベースがサポートしていれば) FOR UPDATEを伴った行ロックを伴った検索および行の更新が可能です。
実行時に特別なクラスライブラリを必要としません。生成したソースコードだけで完結して動作します。またソースコード自動生成時に 解決可能なものは最大限解決を済ませます。このことにより実行時コストを極小化することが実現できます。
基幹系システム開発に対応しています。 基幹系システム開発における一般的な開発プロセスに沿った形で設計および実装されています。
関連する日記