tsalakh ain sus noam Huyah ol guf

勉強会のメモ。その他備忘録。参考にさせて頂いたサイトや資料はリンクさせて頂いていますが不都合があればご連絡ください。

【技術メモ】DBFluteでDB定義書を自動生成

DBFluteでDB定義書を自動生成

前書き

API定義書を自動生成したら、DB定義書も自動生成したい!

A5M2での生成手順はたくさんヒットするが、Macだとwineで無理やりだし、GUIでというのがネック

どうせなら、Jenkinsでポンポン作りたい

ということで今回の参考サイトはこちら

qiita.com

公式サイトも。

DBFluteをORマッパーではなくドキュメンテーションとして採用すること(?)を「Alto(あると)DBFlute」というらしい。

Alto DBFlute | DBFlute

概要

  1. Mavenプロジェクト作成
  2. DBFluteのモジュールを取得
  3. DBFluteJDBC/DOCタスクを実行

Mavenプロジェクトを作成

任意のフォルダに移動して以下を実行、アーティファクトIDの名前のディレクトリが生成される。

$ mvn archetype:generate \
  -DarchetypeArtifactId=maven-archetype-quickstart \
  -DinteractiveMode=false \
  -DgroupId=<グループID> \
  -DartifactId=<アーティファクトID>

参考リンク Maven を使った Java project 作成方法

DBFluteのモジュールを取得

参考リンク Mavenによるセットアップ

pom.xmlを編集

pom.xmlを編集して、DBFluteの依存性を追加。

<?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

DBFluteJDBC/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