Prevayler は、すべての書き込み (そのトランザクションを介して) が同期されることを保証します。しかし、読み取りはどうですか?
(ユーザー コードで) 明示的な同期が使用されていない場合、ダーティ リードが可能であるというのは正しいですか?
ビジネスオブジェクトが次のように読み取られる場合、それらは可能ですか。
// get the 3rd account
Accont account = (Bank)prevayler.prevalentSystem().getAccounts().get(2);
?
もしそうなら、どの同期戦略がユーザーコードに適していますか?
(ビジネス オブジェクト A にビジネス オブジェクト B のコレクションが含まれているとします)、
- java.util.concurrent パッケージなどから (A 内の B の) 同期されたコレクションを使用しますか?
- トランザクション内のコレクションの書き込みとトランザクションの外部のコレクションの読み取りを同期します。