Pageクラス(teeda)やActionクラス(sastruts)に自動的にTxがかかっていることの注意点

例えば利用履歴を検索する画面など、selectしか発生しないような画面でもTransactionがかかっているので、DBでは共有ロックが取得されることがある。(例えばSQLServerとか)

これが原因で更新系のトランザクションブロッキングされる事象がおきました。

今回の事例ではSQLServerだったのと、select文がS2DAOの外だしSQLだったので、NOLOCKヒントを追加して回避することにしました。

自動でTxが制御されるのは便利だけれども、パフォーマンスがシビアなシステムの管理画面などに使用しているときは注意が必要です。