AccessContext

AccessContextとは?

DBアクセス情報を保持し、共通カラムの自動設定の橋渡しをするクラスです。

DBアクセス情報とは、例えば登録ユーザや更新日時などの、そのレコードに対してどのようなアクセスがされたかの情報で、 DBFluteでは特に、全ての(多くの)テーブルに共通カラムとして定義されるものを示します。

AccessContext は、DBアクセス情報をスレッドローカルによって管理し、DBFlute内部の共通カラムの自動設定処理にDBアクセス情報を届けます。 アプリケーションは、AccessContext にDBアクセス情報を格納しておくことで、共通カラムの設定処理を自動化することができます。

プロパティ

DBアクセス情報は、アプリケーションによって構成が変わります。 以下のプロパティはデフォルトで用意されている項目で、アプリに合致するものだけを利用します。 また、項目が足りない場合は、key-value 形式で汎用的に利用できる accessValueMap を利用すると良いでしょう。

accessDate
アクセス日付(java.util.Date)。トランザクション開始時点、もしくは、現在日時など。 値そのものではなく、その値を導出する処理をコールバック(accessDateProvider)も指定できる。
AccessContext.getAccessDateOnThread() で直接スレッドから値を取得できる。 accessDate が設定されていればその値を戻し、なければ accessDateProvider のコールバックからの値を戻す。
accessTimestamp
アクセス日時(java.sql.Timestamp)。トランザクション開始時点、もしくは、現在日時など。 値そのものではなく、その値を導出する処理をコールバック(accessTimestampProvider)も指定できる。
AccessContext.getAccessTimestampOnThread() で直接スレッドから値を取得できる。 accessTimestamp が設定されていればその値を戻し、なければ accessTimestampProvider のコールバックからの値を戻す。
accessUser
アクセスユーザ。アプリケーションのログインユーザなど。
AccessContext.getAccessUserOnThread() で直接スレッドから値を取得できる。
accessProcess
アクセスプロセス。アクセスのきっかけとなった業務名や画面名など。
AccessContext.getAccessProcessOnThread() で直接スレッドから値を取得できる。
accessModule
アクセスモジュール。アクセスを実行したクラス名やメソッド名など。
AccessContext.getAccessModuleOnThread() で直接スレッドから値を取得できる。
accessValueMap
key-value 形式の汎用的な値。
registerAccessValue(key, value) で設定でき、AccessContext.getAccessValueOnThread(key) で直接スレッドから値を取得できる。但し、戻り値の型は Object 型なので Entity のプロパティに設定する場合はダウンキャストが必要。

直接スレッドから値を取得するメソッドは、スレッドローカルがない、もしくは、値がない場合に呼び出したら例外となります。 但し、日付系のプロパティに関しては例外にならず、デフォルト値ということでアプリの現在日時が戻ります。