【技術メモ】DBFluteでDB定義書を自動生成
DBFluteでDB定義書を自動生成
前書き
API定義書を自動生成したら、DB定義書も自動生成したい!
A5M2での生成手順はたくさんヒットするが、Macだとwineで無理やりだし、GUIでというのがネック
どうせなら、Jenkinsでポンポン作りたい
ということで今回の参考サイトはこちら
公式サイトも。
DBFluteをORマッパーではなくドキュメンテーションとして採用すること(?)を「Alto(あると)DBFlute」というらしい。
概要
Mavenプロジェクトを作成
任意のフォルダに移動して以下を実行、アーティファクトIDの名前のディレクトリが生成される。
$ mvn archetype:generate \ -DarchetypeArtifactId=maven-archetype-quickstart \ -DinteractiveMode=false \ -DgroupId=<グループID> \ -DartifactId=<アーティファクトID>
参考リンク Maven を使った Java project 作成方法
DBFluteのモジュールを取得
参考リンク Mavenによるセットアップ
pom.xmlを編集
<?xml version="1.0" encoding="UTF-8"?> <project> ... <properties> ... <dbflute.version>1.1.8</dbflute.version> <database.version>42.2.5</database.version> <dbflute.maven.version>1.1.0</dbflute.maven.version> <dbflute.maven.clientproject>対象にするスキーマ名</dbflute.maven.clientproject> <dbflute.maven.packagebase>MavenのグループID.アーティファクトID</dbflute.maven.packagebase> ... </properties> ... <dependencies> ... <dependency> <groupId>org.dbflute</groupId> <artifactId>dbflute-runtime</artifactId> <version>${dbflute.version}</version> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>${database.version}</version> </dependency> ... </dependencies> ... <build> <plugins> ... <plugin> <groupId>org.dbflute</groupId> <artifactId>dbflute-maven-plugin</artifactId> <version>${dbflute.maven.version}</version> <configuration> <clientProject>${dbflute.maven.clientproject}</clientProject> <packageBase>${dbflute.maven.packagebase}</packageBase> </configuration> </plugin> ... </plugins> </build> ... </project>
※バージョンを1.1.8にしないと、JDBCタスクでPG_TRIGGERの定義が違っててエラーが出る。
Mavenコマンド実行
### DBFluteエンジンのダウンロード $ mvn -e dbflute:download $ ls -la mydbflute ### DBFluteクライアントの作成 $ mvn -e dbflute:create-client $ ls -la dbflute_スキーマ名
DBプロダクト、DIコンテナを指定
postgresqlの場合は変更不要
$ vi dbflute_スキーマ名/dfprop/basicInfoMap.dfprop ; database = postgresql ; targetContainer = spring
DB接続情報を記載
$ vi dbflute_スキーマ名/dfprop/databaseInfoMap.dfprop ... map:{ ; driver = org.postgresql.Driver ; url = jdbc:postgresql://localhost:5432/DB名 ; schema = スキーマ名 ; user = ユーザ名 ; password = パスワード ... }
DDLのコメントをHTMLのALIASに指定
試したけどうまくいかず、調査中。。。
$ dbflute_スキーマ名/dfprop/documentDefinitionMap.dfprop ; isDbCommentOnAliasBasis = true
DBFluteのJDBC/DOCタスクを実行
参考リンク Alto DBFlute - まずは、ドキュメント生成
タスクの実行
引数の21がJDBCタスク、22がDOCタスク
$ sh dbflute_スキーマ名/manage.sh 21,22
HTMLの表示
$ open "/Applications/Google Chrome.app" dbflute_スキーマ名/output/doc/schema-スキーマ名.html
参考資料
jfluteさんのJJUG発表資料。
www.slideshare.net