This is a cache of http://dbflute.seasar.org/ja/tutorial/handson/hint/hint09.html. It is a snapshot of the page at 2024-11-13T00:07:34.100+0000.
セクション 9 のヒント | DBFlute

セクション 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である