java-db-transaction-managerが出ていた
大昔の話ですが,java-db-transaction-managerというのを書いて,リリースしていました.
PerlのTransaction ManagerであるDBIx::TransactionManagerのJava移植版です.シンプルなやつが欲しかったので.
機能としてはDBのtransactionに必要な機能であるbegin,commit,rollbackを提供しています.
入れ子になったtransaction内で既にrollbackされているのにも関わらずcommitが発行された時は例外が上がります.普通な感じですね.
try-with-resourcesを利用することも可能で,もし明示的にcommitもしくはrollbackが発行されないままそのスコープ外に出ると自動的にrollbackを発行するというような挙動になっています.
加えて,アクティブなtransactionのトレース (現在のtransactionのみ,あるいは全てのtransactionについて) を取るということも出来ます.便利!
ところでJavaでLLの様にカジュアルにスタックトレースの情報を取ろうとするとまあまあハイコストで困ってしまう,というかパフォーマンスに支障が出るわけですけれども,それを何とかすべくこのライブラリではJDKのprivateなAPIをリフレクションで呼び出すという力技で解決しています.そうすると速い.ここらへんは
tokuhirom/caller · GitHub
を参考にしました.
御利用ください.
あ,念のため言うとスレッドセーフではないです.