このページは、DBFluteとS2Dao-CodeGenの機能比較の一覧ページです。
DBFlute | S2Dao-CodeGen | |
生成方法 | テーブルスキーマから生成 (今後増やす予定はない) | テーブル定義書(CSV/Excel)から生成/テーブルスキーマから生成 |
動作環境 | JDK1.5+Ant | JDK1.5+Ant |
ターゲット言語 | Java,C# | Java |
生成方法 | 環境変数・プロパティファイルを設定後、バッチファイルを実行して生成 | テーブル定義書を記述またはテーブルを作成後、diconファイルを設定してAntタスクを実行して生成 |
生成物 | Dao,Entity,ConditionBean,Behavior,'dao.dicon',その他 | Dao,Dto,PackDto,PackDao,FindDto,SQLファイル,'alldao.dicon',DDL(DerbyとH2のみ) |
生成したJavaソースの動作環境 | Java{JDK1.4/1.5} + S2Dao-1.0.35/36/37/38/39/40/41 (+ S2Daoに必要なjar) C#{.NET2.0} + S2Dao.net-1.0.4 (+ S2Daoに必要なdll) | JDK1.4以降+S2Dao 1.0.31以降(+ S2Daoに必要なjar) |
対応DB | axion, cloudscape, DB2, DB2/400, hypersonic, interbase, SQLServer,MySQL, Oracle, PostgreSQL, sapdb, sybase, firebird, Derby | DB2,Oracle,MySQL,MaxDB,HSQLDB,PostgreSQL,HSQLDB,Derby,H2,MS SQLServer |
制限 | - 列名に'-'(ハイフン)があるとコンパイルエラーになる。 - 全てのMethodにJavaDocコメント/C#コメントがあるわけではない。 →現在ちょっとづつ作成中。 | 複合キーでない主キーには必ずSEQUENCEアノテーションが付与される。 |
利用スタイル | <自動生成タイミング> まず、テーブルスキーマからClassを自動生成。 その後、DBが変更される度に自動生成し直し。(イテレータブル) ※ジェネレーションギャップの採用によりプロジェクト独自のMethodを追加可能 <DBアクセス> - 簡単なSQLは“ConditionBean”を利用 - 複雑なSQLはS2Daoの“外だしSQL”(SQLファイル)機能をそのまま利用 ★“ConditionBean”と“外だしSQL”の2点のみ利用★ →S2Daoの「SQL自動生成機能/Query-Annotation/S2Pager」などを 利用する必要はない。(全てConditionBeanに代替される) | <自動生成タイミング> まず、テーブル定義書からClassを自動生成。 その後、DBが変更される度に自動生成し直し。(イテレータブル) <DBアクセス> - 簡単な処理はS2DaoのSQL自動生成+Query-Annotationを使用。 - FindDtoにより以下の検索条件(AND条件)をサポート。 一致/より大きい/以上/以下/未満/範囲指定/is null/is not null/複数の値(in)/文字列の前方一致/後方一致/任意項目、任意順でのorder by -PagingはS2Pagerを使用 |
S2Dao拡張 | <DaoMetaDataImplの継承拡張> - S2Daoの“DTOによるSQL自動生成”機能を拡張(ConditionBean) →結合の選択・演算子の選択・基本的な副問合せ ・OrderBy指定・Paging検索・for-updateなど - Daoにおいて、Method毎に戻り値のBeanを指定可能 →JavaにおいてはS2Dao-1.1にてこの機能がサポートされるので いずれ拡張の必要はなくなる <ResultSetWrapperの継承拡張> -LimitOffset(もしくはそれに相当するもの)がSupportされないDBでもPagingが可能 | S2Daoの拡張は行ってない |
その他特徴 | <その他便利な機能> - DatabaseのSchema情報を表示する'SchemaHTML'を自動生成する。 - S2Daoの“外だしSQL”(SQLファイル)から対応するEntityを自動生成する。 <ConditionBean内部処理> - Select句:IFコメントにより結合先テーブルを取捨選択 - From句:指定された結合先テーブルの結合条件を動的に作成 - Where句:指定された絞込み条件を動的に作成 →「大量のIFコメントの判定処理」は発生しない。 | -Eclipse上で各種インターフェースを実装したクラスを作成してdiconに登録することにより、独自フォーマットの定義書の使用・DDLの出力などの機能拡張が可能。 - テーブル定義書のマッピング定義によってn:1マッピングを指定したPackDao,PackDto,SQLファイルを作成する |