外だしSQLのタイトル (OutsideSqlTitle)

Good Bye, 無言のSQL

無言のプログラムもつらいですが、(他人の作った)無言のSQLはさらに増してつらいものです。

DBFluteでは、外だしSQLのタイトルと説明を必須にしています。@since 1.1.0

外だしSQLのヘッダーコメント

ヘッダーコメントの形式

"[タイトル]説明" という形式でタイトルと説明を書きます。@since 1.1.0-sp6

e.g. ヘッダーコメントについて @OutsideSql
/*
 [ここにタイトルを書いて!SQLを識別できる業務的なタイトルをー]
 ここに説明を書いて!SQLの全体的な特徴とか特殊な点とか注意点とかー
*/
-- #df:entity#

-- !df:pmb!
-- !!AutoDetect!!

select ...
  from ...
 where ...
 order by ...

古いバージョンでのヘッダーコメントの形式

DBFluteの古いバージョンだと、[df:title], [df:description] 形式になります。

e.g. ヘッダーコメントについて @OutsideSql
/*
 [df:title]
 ここにタイトルを書いて!SQLを識別できる業務的なタイトルをー
 
 [df:description]
 ここに説明を書いて!SQLの全体的な特徴とか特殊な点とか注意点とかー
*/
-- #df:entity#

-- !df:pmb!
-- !!AutoDetect!!

select ...
  from ...
 where ...
 order by ...

OutsideSqlTestタスクでチェック

もし、ヘッダーコメントがなかったら、OutsideSqlTestタスクでチェックされます。

e.g. ヘッダーコメントがなかったら怒られる @OutsideSql
[df-outside-sql-test] org.dbflute.exception.DfRequiredOutsideSqlTitleNotFoundException: Look! Read the message below.
[df-outside-sql-test] /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
[df-outside-sql-test] The outsideSql title was not found!
[df-outside-sql-test] 
[df-outside-sql-test] [Advice]
[df-outside-sql-test] OutsideSql title is required in this project
[df-outside-sql-test] because the property 'isRequiredSqlTitle' of outsideSqlMap.dfprop is true.
[df-outside-sql-test] So you should add title comment in your outside-SQL like this:
[df-outside-sql-test]   /= = = = = = = = = = = = = = = = = = =
[df-outside-sql-test]   /*
[df-outside-sql-test]    [Simple Member Select]       // *here
[df-outside-sql-test]    This SQL is ...
[df-outside-sql-test]   */
[df-outside-sql-test]   -- #df:entity#
[df-outside-sql-test] 
[df-outside-sql-test]   -- !df:pmb!
[df-outside-sql-test]   -- !!AutoDetect!!
[df-outside-sql-test] 
[df-outside-sql-test]   select ...
[df-outside-sql-test]     from ...
[df-outside-sql-test]    where ...
[df-outside-sql-test]   = = = = = = = = = = /

dfpropによるON/OFF

DBFlute-1.0.x (Java6版) では、もともとデフォルトではありませんでした。 dfpropで有効にしていました。

outsideSqlMap.dfprop (旧outsideSqlDefinitionMap.dfprop) の、isRequiredSqlTitle と isRequiredSqlDescription です。 これが、DBFlute-1.1.x (Java8版) からは、デフォルトが true になりました。