Repository navigation
OTR_DaoGenerator
nishi_74322014 edited this page Oct 27, 2026
·
1 revision
D 層自動生成ツール(墨壺、DaoGen_Tool)は、DB のスキーマ情報から、テーブル・ビュー単位の CRUD 処理の Dao と SQL を自動生成する。
- 生成されたクラスは動的パラメタライズド・クエリを活用している。
- 実装漏れを起こしやすい、タイムスタンプによる楽観排他も生成される。
- 前提情報は DB のスキーマ情報だけで、Excel の設計書は使わない。
- DB のスキーマ情報から、D 層定義情報(CSV)を生成する。
- D 層定義情報とテンプレートから、Dao・SQL ファイル(・DTO)を生成する。

- D 層定義情報は中間ファイルなので、Excel で編集できる(対象の絞り込み、主キーの調整など)。

クラス名は Dao(テーブル名)。S は主キー指定、D は任意の検索条件を表す。
| メソッド | 意味 |
|---|---|
S1_Insert() |
全列を指定して 1 レコード挿入 |
D1_Insert() |
指定した列だけを挿入 |
S2_Select(dt) |
主キーを指定して 1 レコード参照 |
D2_Select(dt) |
検索条件を指定して参照 |
S3_Update() |
主キーを指定して 1 レコード更新 |
D3_Update() |
任意の検索条件で更新 |
S4_Delete() |
主キーを指定して 1 レコード削除 |
D4_Delete() |
任意の検索条件で削除 |
D5_SelCnt() |
レコード件数を取得 |
DaoShippers dao = new DaoShippers(this.GetDam());
dao.PK_ShipperID = shipperId; // 主キー
DataTable dt = new DataTable();
dao.S2_Select(dt);-
D3_Update()/D4_Delete()は、条件を 1 つ間違えると大量のデータを壊しうる。 主キー指定で足りるならS3/S4を使う。 - JOIN を使うクエリなどは生成できない。個別 Dao で書く。参照系ならビューを作れば生成の対象にできる。
- 生成物は手で書き換えない。 テーブル定義が変わったら再生成する。
| オプション | 内容 |
|---|---|
| DTO の生成 | Entity(POCO)、型付きデータセットを生成する(DTO だけの生成も可) |
| テーブル・メンテナンス画面の生成 | テーブル・メンテナンス画面を生成する |
| Like 検索設定(ODP.NET) | Oracle で Like 検索のエスケープを生成する(全角の % _ への対応など) |
GUI のほかに、非対話の CLI(/CUI)がある。エージェントや CI から実行できる。
$exe = "…\OpenTouryo.DaoGen_Tool.exe"
& $exe /HELP *>&1 | Out-File help.txt # 引数の一次情報。まず /HELP を見る
# スキーマ → D層定義 CSV(DB 接続が要る)
& $exe /CUI /MODE DAODEFGEN /OUTPUT "C:/temp/daogen/DaoDef.csv" /DAP SQL /TABLES "Shippers,Orders"
# 定義 CSV → Dao / DTO / SQL(DB には接続しない)
& $exe /CUI /MODE DAOSQLGEN /DAODEF "C:/temp/daogen/DaoDef.csv" /TEMPLATE "<テンプレートのパス>" /OUTPUT "C:/temp/daogen/gen" /DAP SQL /LANG CS- 引数は例である。必須・任意・既定値は
/HELPで確認する。 - 終了コードだけで判断せず、生成物の存在も確認する(パス区切りを誤ると、成功を返しつつ別の場所に出力されることがある)。
- 主キーは SQL Server・Oracle では自動取得する。それ以外の DBMS や主キーの無いビューは
/PRIMARYKEYSで指定する。
- 生成はスキル
opentouryo-daogen-cli、生成物の使い方はopentouryo-dao-generatedを使わせる。 - ツールの README(
root/programs/CS/Frameworks/Tools/DaoGen_Tool/README.md)も読ませる。 - 「生成物を手で直す」のではなく「テンプレートを直して再生成する」ことを徹底させる。
Tags: 再構築
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。