プロダクト |
筆者視点の特徴 |
woolpack.sql 0.07 |
DBメタ情報の管理・クエリ生成・DB値バインド・DB値取得・トランザクション分離機構をテンプレート化しており、
これらをコンポジットとして組み立てます。
|
S2DAO 1.0.40 |
スタティックフィールド、Tiger(Java5)アノテーションを使用してDBカラム-Beanプロパティの対応を定義することができます。
バインド変数コメント付きSQLで値のバインドや動的SQLを定義することができます。
Seasar2のバイトコード加工技術によるトランザクション制御機構を使用することができ、
XML定義ファイルを使用してトランザクション基点をAOPする位置を定義します。
(http://s2dao.seasar.org/ja/index.html)
|
iBatis 2.2.0 |
DBカラム-Beanプロパティ対応表とSQLをXMLに記載します。
業務クラスからは文字列キーでDBアクセス用オブジェクトを取得します。
XMLをベースとするDSLで動的SQLを定義することができます。
独自のインタフェース(SqlMapTransactionManager)やクラス(DaoManager)を使用して
クライアントソースにbefore-afterパターンを定義してトランザクションを制御します。
設定ファイルとDAO、DTOクラスファイルをGUIを操作して生成することができます。
(http://ibatis.apache.org/)
|
ObjectRelationalBridge(OJB) 1.0.4 |
XDocletアノテーションを使用してDBカラム-Beanプロパティの対応を定義することができます。
検索条件を組み立てるためにビルダーパターンを使用することができます。
PersistenceBroker API、ODMG API、JDO、OTM(Object Transaction Manager)の各永続化APIを使用することができ、
クライアントソースにbefore-afterパターンを定義してトランザクションを制御します。
(http://db.apache.org/ojb/)
|
Commons DBUtils 1.1 |
ResultSetHandlerはWoolpackのFnと同等の役割を持ちます。
(http://jakarta.apache.org/commons/dbutils/)
|
DdlUtils 1.0-RC1 |
DatabaseMetaData(DDL)-XML-オブジェクトを相互変換します。
woolpack.sql.metaでもDBメタ情報を扱う簡易の部品を用意していて
DdlUtils利用を検討しているのですが、DdlUtilsが多くの依存ライブラリを持つことと、とexportedな参照制約に直接アクセスできないことからまだ検討中です。
(http://db.apache.org/ddlutils/)
|
dwarf 0.32 |
マスタメンテナンス機能のサーブレットとクラスライブラリ。
Woolpackでもサンプルアプリケーションでjava.sql.DatabaseMetaDataを利用した
汎用CRUDウェブアプリケーションを試作しています。
(http://www.ne.jp/asahi/java/servlet/)
|
Generic DAO (記事) |
Javaの汎用型機構とHibernateとSpring AOPを使用してDAOパターンをテンプレート化しています。
woolpack.sqlはメソッドをひとつに限定したGeneric DAOとみなすことができます。
(http://www-06.ibm.com/jp/developerworks/java/060705/j_j-genericdao.shtml)
|
Hibernate 3.2.2 |
XMLにテーブルとBeanクラスの対応関係を定義します。
参照制約をアクセサでたどるように定義することができます。
特殊クエリ言語(HQL)を使用することができます。
独自のインタフェース(Session, Transaction)を使用してクライアントソースにbefore-afterパターンを定義してトランザクションを制御します。
(http://www.hibernate.org/)
|
Torque 3.3 |
ソースコード自動生成技術を適用しています。
検索条件を組み立てるためにビルダーパターンを使用しています(ビルダブルクエリー)。
トランザクション制御は独自のクラスを使用するかjava.sql.Connectionをメソッドで渡すことにより行います。
(http://db.apache.org/torque/
http://634.ayumu-baby.com/torque/index.html)
|
Cayenne 3.0 |
設定ファイルとDAO、DTOクラスファイルをGUIを操作して生成することができます。
検索条件を組み立てるためにビルダーパターンを使用しています(ビルダブルクエリー)。
独自のインタフェース(DataContext)を使用してクライアントソースにbefore-afterパターンを定義してトランザクションを制御します。
参照制約をアクセサでたどるように定義することができます。
(http://cayenne.apache.org/)
|
Spring 2.0.2 |
Spring AOPによるバイトコード加工技術によるトランザクション制御機構を使用することができ、
XML定義ファイルを使用してトランザクション基点をAOPする位置を定義します。
(http://www.springframework.org/)
|
LINQ |
型推論やラムダ式、Extension Methodsなどの言語機構を活用したクエリ機構です。
Woolpackでは関数型言語との類似性を検証しているので、ラムダ式を活用しているLINQ機構のメリットを検証する必要があると思います。
(http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx)
|
Voruta 1.0.1 |
クエリーをアノテーションで定義します。
(http://voruta.sourceforge.net/)
|
O/R Broker |
DBカラム-Beanプロパティ対応表とSQLをXMLに記載します。
独自のクラス(Transaction)を使用してクライアントソースにbefore-afterパターンを定義してトランザクションを制御します。
(http://orbroker.sourceforge.net/)
|
PriDE |
調査中
(http://pride.sourceforge.net/)
|
Mr. Persister |
調査中
(http://www.jenkov.dk/mrpersister/introduction.tmpl)
|
java6 |
Genericsとアノテーションの組み合わせてインタフェースやアクセサにRDB情報の注釈を加えていきます。
論理的にインタフェースとデータモデルの結合が強くなっているのでこれがどのように副作用するのかまだ見えてこないです。
(http://java.sun.com/javase/6/docs/api/java/sql/package-summary.html
http://www.techscore.com/tech/J2SE/JavaSE6/2.html)
|
参考資料