09/05/27 05:59:32
>>196ありがとう
楽観的ロックでは、1つのトランザクションで複数のテーブルまたは複数のレコードを更新する際には、
デッドロックやそれに伴うデータの不整合になる危険性がある。したがって、1つのトランザクションで
1つのテーブルと1つのレコードを更新する事によりデッドロックの回避が可能になりますが、
これに基づいてDB設計と画面設計は相当慎重に行うべきである。また、S2Daoの排他制御は楽観的ロックなんで、
標準的なDaoクラスでDriverManager.getConnection().setAutoCommit(false)の設定をして
SelectForUpdateによる悲観的ロックを採用した方がシンプルでいいかもしれないね。
加えて、1つのトランザクションで複数のテーブルまたは複数のレコードを更新するケースでは、
rollbackを行えば、データの不整合は改善されるが、Webシステムで更新順序によるデッドロックの回避が
できるのかについては、現時点では僕の把握ではできないと思ってる。