Doma 1.22.0 リリース

Doma 1.22.0 をリリースしました。

ダウンロードはこちらからどうぞ。

Mavenをご利用の方はこちらを参照ください。

以前のバージョンから移行するには移行ガイドを参照ください。

リリースノート

New Feature

  • [DOMA-258] - [Core] Domaがスローする例外のメッセージにフォーマット済みSQLを含めないことを設定可能としました

機能紹介

Domaでは、UniqueConstraintExceptionのような例外のメッセージにフォーマット済みSQLを含めています。フォーマット済みSQLとは、

select * from emp where name = ?

といったSQLの ? の部分を実際の値に置き換えて

select * from emp where name = 'SMITH'

のように変換したものです。


なぜ、このようにしているかというと、それは、開発時にスタックトレースから例外の原因を特定しやすくするためです。


しかし、セキュリティの観点からみると、運用環境でセンシティブな情報をスタックトレースに含めることは考えものです。例外ハンドリングやログ出力に気をつけていれば問題ないのですが、そうはいっても、うっかり情報が漏れてしまうリスクがあります。


そこで、フォーマット済みSQLを例外のメッセージに含めるかどうかはオプションで選択できるようにしました。


設定クラスのインタフェース org.seasar.doma.jdbc.Config に getExceptionSqlLogType というメソッドを追加しました。このメソッドの実装で、列挙型の ExceptionSqlLogType を返すことで、例外のメッセージに含めるSQLのタイプを選択できます。


これまでと同じ挙動を望む場合は次のように実装します。

   @Override
   public ExceptionSqlLogType getExceptionSqlLogType() {
       return ExceptionSqlLogType.FORMATTED_SQL;
   }


SQLをまったく含めたくない場合は次のように実装します。

   @Override
   public ExceptionSqlLogType getExceptionSqlLogType() {
       return ExceptionSqlLogType.EMPTY;
   }


org.seasar.doma.jdbc.Config にメソッドを追加しているので、実装クラスはコンパイルが通らなくなります(DomaAbstractConfigを継承している場合は問題なし)。ご注意を。