> (DBFLUTE-355){Java/C#}: > DBコメントから別名を取得してSchemaHTMLやEntityクラスに反映 ちゃんと利用さえできれば、すごくうれしい機能です。 DBドリブンの自動生成ツールの限界として一つ挙げられるのが、 日本で良く利用される「別名」つまり「和名」を取得することが できないということです。ERD上ではちゃんと「別名」が記載 されていても、DB上にはその「別名」情報はどこにもありません。 なので、前回紹介したSchemaHTMLやJavaDocコメントなどに 「別名」を載せることができません。これは日本人にとっては 結構痛いことです。 そこでDBFluteでは、DBコメントの中にある決まりごとを設けて、 別名を抽出するようにしました。 documentDefinitionMap.dfpropを作成して以下のように設定します。
map:{ ; aliasDelimiterInDbComment = : }
見えにくいですが、この例では「半角コロン」を指定しています。 ここで指定した「区切り文字」を実際のDBコメントの中で利用します。 DBコメント = 別名: 本物のコメント すると、DBFluteはDBコメント上の区切り文字を解釈して、 区切り文字までの文字列を「別名」として扱い、 SchemaHTMLやJavaDocコメントに反映します。 実際に利用したExampleがdbflute-oracle-exampleにあります。 // SchemaHTML(dbflute-oracle-example) // テーブルとカラムにそれぞれに追加された項目「Alias」に注目 https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-oracle-example/dbflute_exampledb/output/doc/project-schema-exampledb.html // JavaDocコメント(dbflute-oracle-example) // インスタンス変数やGetterSetterのJavaDocに注目 https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-oracle-example/src/main/java/com/example/dbflute/oracle/dbflute/bsentity/BsMember.java 「別名(和名)」が付けば、このSchemaHTMLはほぼフォーマルな テーブル定義書として扱っても問題はないくらいの出来になります。 実装時にGetterやSetterを補完した時にふとJavaDocコメントで 「別名(和名)」が出るとかなりプログラマは実装しやすいでしょう。 この機能をしっかり利用するためには、DDLを生成する過程で 工夫が必要です。DBコメント(comment on table/column)を、 ERD上の「別名」と「ノート(コメント)」とを区切り文字で 連結させたDDLにする必要があります。 ERDツールでいかに工夫していかにこのDDLを生成できるかが鍵です。 EAでは、デフォルトではダメなのですが、ERDのメタ情報を直接 参照して独自にDDLを生成することは可能です。 # # documentDefinitionMap.dfpropのサンプルひな形は、 # mydbflute/dbflute-0.8.2/etc/client_directory-template # /fullProperties/dfprop配下にございます。 #