littleAdjustmentMap

littleAdjustmentMapとは?

様々な微調整を行うDBFluteプロパティ。DBFluteクライアントの dfprop 配下の littleAdjustmentMap.dfprop という名前のテキストファイルです。様々なタスクで参照されます。

プロパティ

map型プロパティ で、様々な key-value 形式のプロパティを定義します。

必須のプロパティはありません。

isAvailableAddingSchemaToTableSqlName

スキーマ名をSQLのテーブル名(その他オブジェクト含む)の前に付与するか否か。true を指定した場合、発行されるSQL(外だしSQLは除く)のテーブル名表現が "[schema-name].[table-name]" という形式となります。スキーマ名の付与が必須の環境において有効です。

AdditionalSchema のテーブルにおいては、この設定が内部的に有効 になります(必ず必要なため)。そのため、このプロパティはメインスキーマのオブジェクトのための設定となります。

値候補
true or false
デフォルト
false
補足
  • スキーマ名は自動生成時に埋め込まれる(固定する)ので、開発環境・本番環境の違いに注意
  • スキーマ名が存在しないDBMSでは利用不可

isAvailableAddingCatalogToTableSqlName

カタログ名(データベース名)をSQLのテーブル名(その他オブジェクト含む)の前に付与するか否か。isAvailableAddingSchemaToTableSqlName が true になっていることが前提 で、このプロパティに true を指定した場合、発行されるSQL(外だしSQLは除く)のテーブル名表現が "[catalog-name].[schema-name].[table-name]" という形式となります。カタログ名(データベース名)の付与が必須の環境において有効です。

カタログを指定している AdditionalSchema のテーブルにおいては、この設定が内部的に有効 になります(必ず必要なため)。そのため、このプロパティはメインスキーマのオブジェクトのための設定となります。

値候補
true or false
デフォルト
false
補足
  • カタログ名は自動生成時に埋め込まれる(固定する)ので、開発環境・本番環境の違いに注意
  • カタログ名が存在しないDBMSでは利用不可

isAvailableDatabaseDependency

DBMS依存の機能(メソッド)を生成するためのプロパティ。生成されるメソッドは DBMS ごとに変わるため、将来的に別の DBMS に移行する可能性があって、その移行をスムーズにしたい場合は、このプロパティを極力利用しないことをお奨めします。

値候補
true or false
デフォルト
false

isAvailableDatabaseNativeJDBC

DBMS依存のJDBCのクラスを利用して最適化するかどうかのプロパティ。@since 0.9.7.5

例えば、Oracle のDATE型(時分秒あり)に対する検索条件では、java.sql.Timestamp でバインドするよりも、OracleのJDBCのネイティブ型 oracle.sql.DATE でバインドする方がインデックス利用効率が良いことが報告されています。このプロパティを利用することで、こういった最適化が利用できます。

また、OracleのPL/SQL表(TABLE型)やVARRAY型などのArray型は、バインドする際にどうしても Oracle のJDBCのネイティブ型を利用する必要があります。このプロパティを利用することで、こういった機能が利用できるようになります。

このプロパティを有効にすると、自動生成されたクラスの中で、DBMS依存のJDBCのクラスをコンパイルレベルで参照します。 ゆえに、プロジェクトのクラスパスでそれらクラスが参照できるようになっていることが求められます。但し、最適化の存在しないDBMSにおいては何も変わりません。 このプロパティが導入された最初のバージョンでは、Oracle のみ有効なプロパティとなっています。

値候補
true or false
デフォルト
false

isAvailableNonPrimaryKeyWritable

PKが存在しないテーブルにも insert できるようにするプロパティ。通常、DBFluteではPKのないテーブルに対しては、 Behaviorを使っての更新処理はできません(更新系メソッドが生成されない)。このプロパティを利用することで insert だけはできるようになります。(ただし、デフォルト制約には対応できない insert 文になります)

値候補
true or false
デフォルト
false

もし、PKの役割をするカラムは存在していてPK制約がないだけの場合は、このプロパティの代わりに additionalPrimaryKey を利用することをお奨めします。

classificationUndefinedHandlingType @since 1.1

DB上に(DBFluteプロパティで)区分値として定義されていない値が検索されたときの挙動を決めるプロパティ。 例外にしたり、ログを出したり選択できます。

値候補
EXCEPTION or LOGGING or ALLOWED
デフォルト
LOGGING

それぞれの値による挙動は以下のとおりです。

EXCEPTION
UndefinedClassificationCodeException が throw される
LOGGING
INFOログが出力され、処理は続行される (CDefではgetできない)
ALLOWED
特にログも出力されず、処理は続行される (CDefではgetできない)

DB上の値がDBFluteプロパティで定義された区分値の中に必ず存在するなら(隠れ区分値がなければ)、EXCEPTIONにすると良いでしょう。 データバグを発見するのに有効です。通常は隠れ区分値があってはいけないと想定されるので、多くのプロジェクトで活用できると想定されます。

isCheckSelectedClassification *old

※DBFlute-1.1.x (Java8版) からは、classificationUndefinedHandlingType の方がメインのプロパティとなります。 互換性は維持される想定ですが、classificationUndefinedHandlingType に移行する方が良いでしょう。

DB上に(DBFluteプロパティで)区分値として定義されていない値が検索されたときに明示的な例外にするプロパティ。定義されていない値が(検索時に)検知されると IllegalClassificationCodeException が発生する。

値候補
true or false
デフォルト
false

DB上の値がDBFluteプロパティで定義された区分値の中に必ず存在するなら(隠れ区分値がなければ)、 データバグを発見するのに有効です。通常は隠れ区分値があってはいけないと想定されるので、多くのプロジェクトで活用できると想定されます。 isForceClassificationSetting プロパティと併用すると良いでしょう。

isForceClassificationSetting *old

※DBFlute-1.1.x (Java8版) からは、デフォルトで true になり、classificationDefinitionMap.dfprop にて区分値ごとに調整ができるようになっています。

EntityやCBにおいて、区分値の関連付いたカラムのネイティブ型での設定メソッドの可視性を protected にするプロパティ。 区分値メソッドの利用を強制させることができます。

値候補
true or false
デフォルト
true if 1.1.x, false if 1.0.x
補足
  • 共通カラムの区分値カラムは、Entityは public のまま @since 1.0.4C
  • 共通カラムの区分値カラムがある場合は利用できない @until 1.0.4B

ただし、DBFluteとは無関係のツールなどでEntityに対して設定処理を行う場合や、 既に区分値であることが保証されたパラメータの直接設定などにおいて注意が必要です。 そのような場合も必ず CDef (ENUM)経由での設定を行う必要があります。

また、もしDB上に区分値定義にない値が存在していてその値を検索した場合、 DBFluteも区分値メソッドを使って Entity にセットするため、該当する区分値がないという判断で Entity には null がセットされます。よって、もし隠れ区分値などがある場合は、このプロパティは利用できません。 逆に、そのような隠れ区分値はデータ不備であると言い切れるなら(通常は言い切れる)、このプロパティを有効にした上で isCheckSelectedClassification プロパティを有効にすると良いでしょう。

ちなみに、このプロパティを一時的に有効にして、コンパイルエラー経由でネイティブ型での設定メソッドの利用箇所を特定するというツール的な使い方もできます。 (区分値をハードコードしている箇所を探すために)

isMakeEntityChaseRelation *deleted

※すでに削除されています。

null を意識せずにEntityのリレーションを辿るためのメソッドを生成するプロパティ。

例えば、会員Entityから会員ステータスEntityの会員ステータス名称を取得する際に、 会員ステータスが存在しない可能性がある場合は一旦 "nullチェック" を行ってから取得する必要があります。

e.g. "nullチェック" をする場合 @Java
MemberStatus memberStatus = member.getMemberStatus();
if (memberStatus != null) {
    String memberStatusName = memberStatus.getMemberStatusName();
}

会員ステータス名称が存在しない場合と会員ステータス自体が存在しない場合とを区別する必要がない場合は、このプロパティを "true" にすることによって生成されるメソッドを利用することでシンプルに記述ができます。"chaseXxx()" メソッドは会員ステータスが存在しない場合でも null を戻さず、"空っぽの会員ステータス" を戻します。

e.g. "nullチェック" を意識しないで辿る場合 @Java
String memberStatusName = member.chaseMemberStatus().getMemberStatusName();

利用するWEBフレームワークなどの特徴によって、このメソッドがアプリケーションで統一的に扱えるような場合に有効です。 逆に、ターゲットが曖昧な場合はディベロッパーが混乱するだけですので利用しないことをお奨めします。

値候補
true or false
デフォルト
false
補足
  • 0.9.5.5で廃止されたisMakeEntityTraceRelationプロパティを代替

isEntityConvertEmptyStringToNull

Entityにて、空文字を null に変換するプロパティ。

Entity経由の登録・更新データ、検索データに含まれる空文字を null と扱う場合に有効です。全てのカラムにおいて、業務的に空文字は "値がないこと(null)" として取り扱って問題ないことが前提です。

e.g. 空文字が null に変換される {MEMBER_NAME} @Java
Member member = new Member();
member.setMemberName("");
assertNull(member.getMemberName());
値候補
true or false
デフォルト
false
補足
  • get メソッドにて変換された値が戻される
  • (内部的な)インスタンス変数では空文字は保持されている

isMakeConditionQueryEqualEmptyString

ConditionBeanの検索条件で "カラムの値が空文字であること" という検索条件メソッドを生成するプロパティ。

通常、ConditionBeanの検索条件は "null" と "空文字" を無効な値として扱うため、空文字を有効な条件値として利用したい場合は、 このプロパティを利用する必要があります。

e.g. "会員名称が空文字であること" という検索条件を指定する場合 @Java
cb.query().setMemberName_Equal_EmptyString();
値候補
true or false
デフォルト
false
補足
  • NotEqualのメソッドも生成される
  • IncludeQueryの設定と組み合わせれば、限定したカラムにだけ生成することが可能

isPagingCountLater

ConditionBean や外だしSQLの Paging において、カウント検索が後に実行されるようになるプロパティ。 @since 0.9.8.8

デフォルトで有効になっているので、カウント検索を先に実行されるようにする場合は false にします。 @since 0.9.9.0A

値候補
true or false
デフォルト
true
補足
  • DBFluteConfigの同名のコンフィグのデフォルト値となって適用される

isPagingCountLeastJoin

ConditionBean の Paging のカウント検索で、必要性を自動判別して最小限の結合(Join)にするプロパティ。 true にすると全ての ConditionBean が enablePagingCountLeastJoin() が呼び出された状態となります。 @since 0.9.8.8

デフォルトで有効になっているので、カウント検索での結合の最小限化をしないようにする場合は false にします。 @since 0.9.9.0A

値候補
true or false
デフォルト
true
補足
  • DBFluteConfigの同名のコンフィグのデフォルト値となって適用される
  • Union を利用している ConditionBean の場合は無視される

isInnerJoinAutoDetect

ConditionBean で生成されるSQLの結合で InnerJoin が可能なものを自動判別し、InnerJoin で結合するプロパティ。 true にすると全ての ConditionBean が enableInnerJoinAutoDetect() が呼び出された状態となります。 @since 0.9.8.8

値候補
true or false
デフォルト
true @since 1.0.3
補足
  • DBFluteConfigの同名のコンフィグのデフォルト値となって適用される
  • Union や SubQuery などの ConditionBean にも反映される

isTableDispNameUpperCase

SchemaHTML や JavaDoc 上で表示されるテーブル名を強制的に大文字にするプロパティ。 ERD管理上はメタ情報が大文字で管理されていながらもDBのメタ情報では小文字で管理されてしまう状況(例えば、MySQLのlower_caseオプション)において、 可読性のためにドキュメント上のテーブル名は大文字管理したいという場合に有効です。 @since 0.9.9.1A

値候補
true or false
デフォルト
false

ただし、DBMS上で管理されているテーブル名と厳密に一致しない文字となる可能性があるため、 特にメタデータを利用してテーブル名を比較するような場合は注意する必要があります。

isTableSqlNameUpperCase

ConditionBean や Behavior で生成されるSQL上のテーブル名を強制的に大文字にするプロパティ。 ERD管理上はメタ情報が大文字で管理されていながらもDBのメタ情報では小文字で管理されてしまう状況(例えば、MySQLのlower_caseオプション)において、 可読性のためにSQL上のテーブル名は大文字管理したいという場合に有効です。 @since 0.9.9.0D

値候補
true or false
デフォルト
false

isColumnSqlNameUpperCase

ConditionBean や Behavior で生成されるSQL上のカラム名を強制的に大文字にするプロパティ。 ERD管理上はメタ情報が大文字で管理されていながらもDBのメタ情報では小文字で管理されてしまう状況(例えば、MySQLのlower_caseオプション)において、 可読性のためにSQL上のカラム名は大文字管理したいという場合に有効です。 @since 0.9.9.0D

値候補
true or false
デフォルト
false

isMakeDeprecated

非推奨のメソッドを生成するプロパティ。

値候補
true or false
デフォルト
false
補足
  • 特別な理由がない限りはこのプロパティは "false" がお奨め
  • 非推奨のメソッドは将来のバージョンで完全に削除される可能性あり

isSpecifyColumnRequired

ConditionBean の SpecifyColumn を必須にするプロパティ。

ConditionBean - SpecifyColumn

SpecifyColumn は、デフォルトで必須ではありませんが、それを必須にすることができます。このプロパティを設定すると、SpecifyColumnを利用していない ConditionBean で検索すると例外 (RequiredSpecifyColumnNotFoundException) が発生します。

値候補
true or false
デフォルト
false

DBFluteConfig の SpecifyColumnRequiredExceptDeterminer を設定することで、必須チェックを除外することもできます。 例えば、"UnitTestにおける検索は除外する" などを想定しています。 また、SpecifyColumnRequiredExceptDeterminer.Bowgun で豪快に設定することもできます。

isNonSpecifiedColumnAccessAllowed

SpecifyColumn をしていないカラムを get しても例外が発生しないようにするプロパティ。

SpecifyColumn をしていないカラムを get したとき、1.1.x (Java8版) から例外になるように変更されていますが、それを抑制するための互換プロパティです。 1.0.x (Java6版) からの移行時に、既存のコードでそういうコードがあった場合でも例外にならないようにするためのものです。

値候補
true or false
デフォルト
isCompatibleBeforeJava8プロパティと同値 (デフォルトではfalse)

isMakeRecentlyDeprecated

最近、非推奨になったメソッドを生成するプロパティ。

値候補
true/false
デフォルト
true
補足
  • 互換性を考慮してデフォルトは "true"
  • 特別な理由がない限りはこのプロパティは "false" がお奨め
  • 非推奨のメソッドは将来のバージョンで完全に削除される可能性あり

extendedDBFluteInitializerClass

DBFluteに関する独自の固定的な初期化処理をしたい場合に設定するプロパティ。 主に、どの環境でも有効にしたい固定的な DBFluteConfig の設定を行うために利用します。

値候補
DBFluteInitializer のサブクラス(FQCN)
デフォルト
なし
補足
  • このプロパティを利用するときは慎重に慎重を重ねること
  • DBFluteInitializerのソースを読んで理解してから利用すること
  • DBFluteConfigの設定処理は prologue メソッドをオーバーライドして行うこと
  • prologue メソッドをオーバーライドする際は、super の処理も必ず呼び出すこと
  • DBFlute.NET では無効なプロパティ

extendedImplementedInvokerAssistantClass

DBFluteのコアな部分の挙動を独自に拡張したい場合に設定するプロパティ。

値候補
ImplementedInvokerAssistant のサブクラス(FQCN)
デフォルト
なし
補足
  • このプロパティを利用するときは慎重に慎重を重ねること
  • DBFluteランタイムのソースを読んで理解してから利用すること
  • DBFlute.NET では無効なプロパティ

extendedImplementedCommonColumnAutoSetupperClass

共通カラムの自動設定の挙動を独自に拡張したい場合に設定するプロパティ。

値候補
ImplementedCommonColumnAutoSetupper のサブクラス(FQCN)
デフォルト
なし
補足
  • このプロパティを利用するときは慎重に慎重を重ねること
  • DBFluteランタイムのソースを読んで理解してから利用すること
  • DBFlute.NET では無効なプロパティ

shortCharHandlingMode

char型のカラムに対して、その桁数に満たない値が設定された場合の挙動を指定します。

現場フィット - char型の桁数不足の取扱い
値候補
NONE, EXCEPTION, RFILL, LFILL
デフォルト
NONE

quoteTableNameList

BehaviorやCBなどで自動で発行するSQL上でクォートする対象のテーブルのリストを指定します。また、ReplaceSchema や Generate など DBFlute タスク内で発行するSQLでも(一部)有効です(@since 0.9.7.9)。 主に予約語などを利用しているテーブルに利用します。

ただし、DBFlute として予約語に対して積極的なサポートをしているわけではないため、アプリへの適用可否をついてしっかりと確認するように下さい。 DBFluteとしては、予約語のテーブル名(カラム名)は強く非推奨として、どうしても名前を変えられない場合は、 その予約語のテーブルは自動生成対象外に設定し、そのテーブルを参照する更新可能ビューやシノニムを自動生成対象にするやり方をお奨めします。

値候補
テーブル名のリスト or $$ALL$$
デフォルト
なし
補足
  • $$ALL$$が指定されている場合は、問答無用で全てのテーブルがクォートされる @since 0.9.7.9

classificationDefinitionMap.dfprop のテーブル区分値の定義、table のテーブル名に対しても有効ですが(@since 0.9.7.9)、where や orderBy などの(SQLの一部としての)フリーテキストの表現の中に含まれるテーブル名は対象外です(その代わり、直接クォートした記述が許可されます)。

また、その他 SQL の一部をフリーテキストで記述するプロパティなどにおいて対象外です。 例えば、additionalForeignKeyMap.dfprop の fixedCondition の中のテーブル名などが該当します。

このプロパティは TwoEdgedSword 認定のされた機能です。

quoteColumnNameList

BehaviorやCBなどで自動で発行するSQL上でクォートする対象のカラムのリストを指定します。また、ReplaceSchema や Generate など DBFlute タスク内で発行するSQLでも(一部)有効です(@since 0.9.7.9)。 主に予約語などを利用しているテーブルに利用します。@since 0.9.7.5

ただし、DBFlute として予約語に対して積極的なサポートをしているわけではないため、アプリへの適用可否をしっかりと確認するように下さい。 DBFluteとしては、予約語のテーブル名(カラム名)は強く非推奨として、どうしても名前を変えられない場合は、 その予約語のカラムは自動生成対象外に設定し、そのカラムを参照する更新可能ビューやシノニムを自動生成対象にするやり方をお奨めします。

値候補
カラム名のリスト or $$ALL$$
デフォルト
なし
補足
  • $$ALL$$が指定されている場合は、問答無用で全てのカラムがクォートされる @since 0.9.7.9

classificationDefinitionMap.dfprop のテーブル区分値の定義、code, name, alias, comment のカラム名に対しても有効ですが(@since 0.9.7.9)、where や orderBy などの(SQLの一部としての)フリーテキストの表現の中に含まれるカラム名に関しては対象外となります(その代わり、直接クォートした記述が許可されます)。

また、その他 SQL の一部をフリーテキストで記述するプロパティなどにおいて対象外です。 例えば、additionalForeignKeyMap.dfprop の fixedCondition の中のカラム名などが該当します。

このプロパティは TwoEdgedSword 認定のされた機能です。

relationalNullObjectMap

Entity で親テーブル(many-to-one, one-to-one)のデータを取得する際に、そのデータが存在しなかったときに戻す NullObject を定義します。通常は、データが存在しない場合は戻るのは null ですが、独自のインスタンスを戻すことができます。@since 0.9.9.1B

例えば、ConditionBean で会員ステータスを SetupSelect しないで検索した会員において、Member.getMemberStatus() を呼び出したときに、独自のインスタンスを戻すことができます。 この仕組みを利用すれば、テーブル区分値のキャッシュなどに活用できます。

e.g. relationalNullObjectMapの仕様 @littleAdjustmentMap.dfprop
; relationalNullObjectMap = map:{
    ; providerPackage = [package] # デフォルト: 設定なし
    ; foreignMap = map:{
        ; [table-name] = [provider-expression]
    }
}
e.g. 会員ステータスに NullObject を設定 @littleAdjustmentMap.dfprop
; relationalNullObjectMap = map:{
    ; providerPackage = $$packageBase$$.nogen.cache
    ; foreignMap = map:{
        ; MEMBER_STATUS = CachedMemberStatus.get($$PrimaryKey$$)
    }
}
値候補
map型プロパティの key-value
デフォルト
なし
補足
  • providerPackage で指定されたパッケージが Entity で import される
  • providerPackage で $$packageBase$$ と指定すると、DBFluteの自動生成パッケージ(packageBase)に
  • table-name には、NullObject にしたい関連テーブルを指定 (例えば、MEMBER_STATUS)
  • provider-expression にて $$PrimaryKey$$ と指定すると、関連テーブルの主キーに対応する Getter 表現に

cursorSelectFetchSize

全てのカーソル検索に適用するデフォルトの FetchSize (JDBCのパラメータ) を設定します。 カーソル検索におけるパフォーマンスの調整や、JDBCドライバの特殊な仕様に対応する場合に利用します。

値候補
プログラム上で記述できるInteger表現(リテラル値など)
デフォルト
なし
補足
  • リテラル値のみならず、Integer.MIN_VALUE と指定することもできる
  • DBFluteConfigの同名のコンフィグのデフォルト値となって適用される

主に、MySQLのカーソル検索のメモリ対策などで利用します。

refreshMap

Eclipseの自動リフレッシュに関する設定を変更します。

※1.0.x (Java6版) までは、refreshDefinitionMap.dfprop という独立したファイルで設定していましたが、1.1.x (Java8版) からは littleAdjustmentMap.dfprop の一部プロパティになりました。

値候補
map型プロパティの key-value
デフォルト
なし
補足
  • EclipseにEMechaプラグインが入っていることが前提
  • projectName でEclipseプロジェクト名を指定
  • requestUrl でEclipseプラグインのEMechaに対するURLを指定

optimisticLockMap

排他制御に関する設定を変更します。

※1.0.x (Java6版) までは、optimisticLockDefinitionMap.dfprop という独立したファイルで設定していましたが、1.1.x (Java8版) からは littleAdjustmentMap.dfprop の一部プロパティになりました。

値候補
map型プロパティの key-value
デフォルト
なし
補足
  • デフォルトでは、VERSION_NO という名前のカラムで排他制御される
  • updateDateFieldName で更新日時カラム名を指定すると、更新日時で排他制御される
  • versionNoFieldName で別のバージョン番号カラム名を指定すると、そのカラムで排他制御される

移行系プロパティ

isMigrateOldJavaxToJakarta @since 1.2.7

自動生成クラスが参照している古い "javaxパッケージ" を "jakartaパッケージ" に移行します。

(例えば)Tomcat10からは、多くのjavaxパッケージがjakartaパッケージに変わりました。 それに伴い、DBFluteが参照するパッケージも変更する必要があります。 自動生成してその部分がコンパイルエラーになるようでしたが、このプロパティを設定してみましょう。

値候補
true or false
デフォルト
false (将来のバージョンではデフォルトtrueになる可能性あり)
補足
  • DBFlute-1.2.6 2023/03/13 パッチに含まれている