29.4. エンティティ bean のロックとデッドロックの検出

本項では、エンティティ bean ロックとは何か、JBoss ではどのようにしてエンティティ bean へのアクセスが行われ、ロックされるのかについて説明します。また、システムでエンティティ bean を使用する際に遭遇する可能性がある問題とその対処方法の他、 デッドロックについては正式に定義して検討を行ってみます。最後に、エンティティ bean のロックという観点からシステムの微調整について見ていきます。

29.4.1. JBoss にロック機能が必要な理由

ロック機能とは、データの整合性を保護するためのものです。時に、極めて重要なデータの更新を行うことができるユーザーは一度に確実に一人のみにする必要があります。また、読み取りや書き込みが同時に起こることでデータが破損しないよう、システム内の機密オブジェクトに対するアクセスがシリアル化される必要がある場合もあります。従来はデータベースがこうした機能をトランザクションスコープや表と行のロック機能で提供しています。
エンティティ bean はオブジェクト指向のインターフェースをリレーショナルデータに提供するのに最適の方法となります。 これに加え、 更新が確実に必要となるまでキュッシュして遅延させることでデータベースの負荷を低減しパフォーマンスを改善することができるため、データベースの効率性を最大限に引き出すことが可能になります。ただし、キャッシングではデータの整合性が問題となるため、 従来のデータベースで使用していたようなトランザクション分離プロパティを提供するにはなんらかのアプリケーションサーバーレベルのロック機能が必要となります。