DBFlute-1.1に近づくオプションたち

1.0.xでもできるだけ1.1方式に

というような人のための、前方互換オプションがあります。
(1.1になれば、それがそのまま後方互換になる)

Java6でもJava7でもJava8でも利用できます。
Java8での開発なら、なおさら1.1への移行も視野にいれて
やっておくとよいでしょう。

【追記】移行の手順ドキュメントもあります
 => 移行 1.0.x to 1.1

いますでに開発中なら

まずは、コンパイルさえ通ればOKなプロパティ。
開発中のプロジェクトで試しに自動生成してみて、
コンパイル通ればOKなプロパティたちがいます。
(注:リフレクションでメソッド呼び出ししてるとかなければ)

以下のプロパティたちがそうです。
(littleAdjustmentMap.dfprop)
map:{
    # _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    # for future DBFlute
    # http://d.hatena.ne.jp/jflute/20140530/java8
    # _/_/_/_/_/_/_/_/_/
    # compile compatible (true if compatible)
    ; isCompatibleSelectByPKOldStyle = false
    ; isCompatibleSelectByPKPlainReturn = false
    ; isCompatibleSelectByPKWithDeletedCheck = false
    ; isMakeConditionQueryExistsReferrerToOne = false
    ; isMakeConditionQueryInScopeRelationToOne = false
    ; isMakeConditionQueryPlainListManualOrder = false
    ; isMakeDirectConditionBeanSetup = true
    ; isMakeBatchUpdateSpecifyColumn = false
    ; isAvailableSelectEntityPlainReturn = true
    ; isAvailableRelationPlainEntity = true
    ; isMakeConditionQueryPrefixSearch = false
    ; isMakeConditionQueryDateFromTo = false
    ; isMakeDirectConditionOptionSetup = false
    ; isMakeDirectConditionManualOrder = false
    ; isCompatibleNewMyEntityConditionBean = false
    ; isCompatibleDeleteNonstrictIgnoreDeleted = false
    ; isCompatibleLoadReferrerOldOption = false
    ; isCompatibleConditionBeanAcceptPKOldStyle = false
    ; isCompatibleConditionBeanOldNamingCheckInvalid = false
    ; isCompatibleConditionBeanOldNamingOption = false
    ; isCompatibleBizOneToOneImplicitReverseFkAllowed = false
    ; isCompatibleReferrerCBMethodIdentityNameListSuffix = true
    ; isCompatibleOutsideSqlFacadeChainOldStyle = false
    ; isCompatibleSelectScalarOldName = false

    # compile compatible (false if compatible)
    ; isMakeCallbackConditionBeanSetup = false
    ; isEntityDerivedMappable = true
    ; isAvailableJava8TimeLocalDateEntity = false
    ; isMakeCallbackConditionOptionSetup = false
    ; isMakeCallbackConditionManualOrder = false

    ...(もともとあるコメント付きのプロパティたち)
}
「true」がデフォルトのものが上で、
「false」がデフォルトのものが下です。

こちらをコピーして自動生成してみてください。
さあ、コンパイルエラーはどれだけ出たでしょうか?
何も出なければラッキー☆そのままでOKですし、
ちょっと頑張れば直せそうなら直してしまうのがいいかと。

あまりに多いなら、
そのコンパイルエラーのきっかけになっている
プロパティのtrue/falseを逆にしてください。

さて、幾つかのプロパティが、
1.1に近づいてないのに気付かれましたでしょうか?
これらは、開発中だと恐らく移行無理なプロパティです。
selectEntity()の戻り値をOptionalにしたり、
関連テーブルのEntityのgetをOptionalにしたり、
まあさすがに修正量が半端ないので無理かなって。
(もちろん、できそうなら設定変えちゃってOKです)

...
...

そして、実行して動けばOKなプロパティ。
って、一応紹介はしますが、
こちらは開発中だとさすがにもう無理かなって。

実行して動けばって、その確認ってなかなか難しいですよね。
map:{
    ...(さっきの続き)

    # runtime compatible (true if compatible)
    ; isNullOrEmptyQueryAllowed = true
    ; isOverridingQueryAllowed = true
    ; isNonSpecifiedColumnAccessAllowed = true
    ; isCompatibleConditionBeanFromToOneSideAllowed = true
    ; isCompatibleOrScopeQueryPurposeNoCheck = false
    ; isSuppressDefaultCheckClassificationCode = true

    # runtime compatible (false if compatible)
    ; isThatsBadTimingDetect = true

    ...(もともとあるコメント付きのプロパティたち)
}
こちらも、幾つかのプロパティが互換のままで紹介されてます。
移行するのは無理そうだから。

というか、1.1に近づいている設定になっているのは、
「普通に実装していればありえない系の実装をチェック」するもの。
まあ、へんな実装が存在していたら落ちちゃうけど、
どちらかというと落として直したいものたち。
でも、これでも本番へのリリースが間近に控えてる場合は
やめましょう。しっかり一通りテストするから、っていう
ようなときじゃないとですね。

jflute自身、とあるプロジェクトで設定したのですが、
これとまったく同じです。
でも、OrScopeQueryはgrepで全部確認しました。
他にもリファクタリングがあって、どのみち一通りのテストが
必要だったので、踏み切ることができたという感じです。

そして、これらは1.1になったらすべてデフォルトが逆になります。
そのときはもう、互換性キープ設定になっているプロパティ以外は、
プロパティの定義自体を削除しちゃってOKです。

いまから1.0.xで開発するなら

つまり、新規開発なら...
以下を littleAdjustmentMap.dfprop にコピー!
...
...
って、ちょっとらんぼうすぎましたkね。
良ければ、コピーという感じで。
幾つかは元のままがいいとかであれば微調整を。

例えば、Optionalの部分とか、NullOrEmptyQueryの部分とか。
1.0.x系のドキュメントの内容とちょっと離れてしまいますからね。

ただ、それ以外はやってしまってもいいかとは思います。
map:{
    # _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
    # for future DBFlute
    # http://d.hatena.ne.jp/jflute/20140530/java8
    # _/_/_/_/_/_/_/_/_/
    # compile compatible (true if compatible)
    ; isCompatibleSelectByPKOldStyle = false
    ; isCompatibleSelectByPKPlainReturn = false
    ; isCompatibleSelectByPKWithDeletedCheck = false
    ; isMakeConditionQueryExistsReferrerToOne = false
    ; isMakeConditionQueryInScopeRelationToOne = false
    ; isMakeConditionQueryPlainListManualOrder = false
    ; isMakeDirectConditionBeanSetup = false
    ; isMakeBatchUpdateSpecifyColumn = false
    ; isAvailableSelectEntityPlainReturn = false
    ; isAvailableRelationPlainEntity = false
    ; isMakeConditionQueryPrefixSearch = false
    ; isMakeConditionQueryDateFromTo = false
    ; isMakeDirectConditionOptionSetup = false
    ; isMakeDirectConditionManualOrder = false
    ; isCompatibleNewMyEntityConditionBean = false
    ; isCompatibleDeleteNonstrictIgnoreDeleted = false
    ; isCompatibleLoadReferrerOldOption = false
    ; isCompatibleConditionBeanAcceptPKOldStyle = false
    ; isCompatibleConditionBeanOldNamingCheckInvalid = false
    ; isCompatibleConditionBeanOldNamingOption = false
    ; isCompatibleBizOneToOneImplicitReverseFkAllowed = false
    ; isCompatibleReferrerCBMethodIdentityNameListSuffix = false
    ; isCompatibleOutsideSqlFacadeChainOldStyle = false
    ; isCompatibleSelectScalarOldName = false

    # compile compatible (false if compatible)
    ; isMakeCallbackConditionBeanSetup = true
    ; isEntityDerivedMappable = true
    ; isAvailableJava8TimeLocalDateEntity = true
    ; isMakeCallbackConditionOptionSetup = true
    ; isMakeCallbackConditionManualOrder = true

    # runtime compatible (true if compatible)
    ; isNullOrEmptyQueryAllowed = false
    ; isOverridingQueryAllowed = false
    ; isNonSpecifiedColumnAccessAllowed = false
    ; isCompatibleConditionBeanFromToOneSideAllowed = false
    ; isCompatibleOrScopeQueryPurposeNoCheck = false
    ; isSuppressDefaultCheckClassificationCode = false

    # runtime compatible (false if compatible)
    ; isThatsBadTimingDetect = true

    ...(もともとあるコメント付きのプロパティたち)
}
あと、outsideSqlDefinitionMap.dfpropにもあります。
外だしSQLのコメントを強制するやつです。
開発中は厳しいかもということで先ほどの紹介にも含めてないですが、
新規開発ならやってしまっていいかと思います。
(or 開発中でも今からでもコメント付けていきたいならチャレンジ!?)
map:{
    # the test of required SQL comment check option
    ; isRequiredSqlTitle = true
    ; isRequiredSqlDescription = true
    ; isCheckRequiredSqlCommentAlsoSql2Entity = true

    ...(もともとあるコメント付きのプロパティたち)
}

そもそもどんなプロパティ?

// DBFlute-1.1の日付型 Time API
http://d.hatena.ne.jp/jflute/20140829/localdate

// DBFlute-1.1のDerivedReferrer
http://d.hatena.ne.jp/jflute/20140828/derived

// DBFlute-1.1ではSQLにコメントを
http://d.hatena.ne.jp/jflute/20140824/sqlcomment

// DBFlute-1.1の区分値強制のお話
http://d.hatena.ne.jp/jflute/20140823/forcecls

// DBFlute-1.1になったらStrict
http://d.hatena.ne.jp/jflute/20140813/strict11

// DBFluteのJava8版というか1.1ではこうなる
http://d.hatena.ne.jp/jflute/20140530/java8

いずれは、こうなる。

ということで、プロジェクトの都合が許しさえすれば、
後々のためにも慣れておいた方がいいということで、
設定してみてはどうでしょう?