Skip to content

OTR_DaoGenerator

nishi_74322014 edited this page Oct 27, 2026 · 1 revision

D層自動生成ツール

概要

D 層自動生成ツール(墨壺、DaoGen_Tool)は、DB のスキーマ情報から、テーブル・ビュー単位の CRUD 処理の Dao と SQL を自動生成する。

  • 生成されたクラスは動的パラメタライズド・クエリを活用している。
  • 実装漏れを起こしやすい、タイムスタンプによる楽観排他も生成される。
  • 前提情報は DB のスキーマ情報だけで、Excel の設計書は使わない。

詳細

生成の仕組み

  1. DB のスキーマ情報から、D 層定義情報(CSV)を生成する。
  2. D 層定義情報とテンプレートから、Dao・SQL ファイル(・DTO)を生成する。

D層自動生成ツール1

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

生成された Dao

D層自動生成ツール2

クラス名は 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 検索のエスケープを生成する(全角の % _ への対応など)

CLI で生成する(非対話)

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: 再構築

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki
開発基盤部会 Wiki

移行管理: DONE / TODO

Clone this wiki locally