セクション 9 のヒント
概要
DBFluteハンズオン、セクション 9 のヒントです。
見ると後悔するかもしれませんので、タイミング良く見てください。
カーソル検索のボーナスステージ
Integer.MIN_VALUEの設定をすると、壁が待っています。
まずは壁の分析をしましょう
問題分析と問題解決をしっかり分けて考えましょう。 なので、最初は問題分析です。いったい何が起きているのか?それを掴みましょう。
そのためにエラーメッセージを読みましょう
そのためには、エラーメッセージには真摯に接しましょう。
エラーメッセージで検索する (ググる) のも、一つのやり方。
見つけたドキュメントを読みましょう
ポイントになるドキュメントを見つけることができたら、しっかり読んで対処をしましょう。
DBFluteハンズオン自体の環境に着目
DBFluteハンズオンで使っているフレームワークやライブラリは何なのか? ビルドツールとして Maven を使っていますから、pom.xml に依存ライブラリは書いてあります。
究極のヒント
ほぼ答えに近いことが書いていますので注意。(薄目で、上から一行ずつ読んで考えるのも良いでしょう)
- DBFluteのMySQLのページが用意されている (エラーメッセージでググれば見つかる)
- DBFluteハンズオンでは Lasta Di を使っている (トランザクションを制御するのは誰だ?)
- Lasta Di のページを見れば、トランザクションのかけ方はわかる (ドキュメントはしっかり読もう)
- ただ、DIコンテナ管理外(自分でnewしている)のインスタンスにInterceptorは効かないもの
- (正しい方法でやっているはずなのに効かない、そのときはそもそもなぜ効くのか?を考える)
- DIコンテナはそもそも、動的にクラスを継承してオーバーライドしてInterceptorを実現している
- (要件を満たすとなると)本番とUnitTestで、トランザクション制御を分けるしかない
- 自分でnewしているのであれば、自分でInterceptorのようなことを拡張できる
- MySQLのデフォルトのトランザクション分離レベルは、RepeatableReadである