私のモデルには、より複雑で例外をスローできるメソッドがいくつかあります。これらの例外が発生すると、モデルに一貫性のない状態が残る可能性があります。コントローラはこの動作を認識しており、データストア内で一貫性のないエンティティを使用/永続化することはなかったため、この状況はこれまで問題になりませんでした。このモデルのインスタンスは通常、ガベージコレクタ用にそのまま残されていました。
ただし、Objectifyのドキュメントを読んでいると、セッションキャッシュがアプリケーションに返されるのとまったく同じJavaオブジェクトを保持していることに気付きました。この動作は、一貫性のないエンティティが破棄されるという私の仮定を台無しにする可能性がありますか?
これは予想される動作ですか?これからは、モデルのすべてのインスタンスを、何があっても常に一貫した状態のままにしておく必要があります。それらはすべて暗黙的にキャッシュに保存できるためです。その場合は、チェックされていない例外も含めて、例外をスローするすべてのメソッドを確認して、モデルのインスタンスが常に一貫性があり、使用可能であることを確認する必要があります。
また、これはマルチスレッドのJavaアプリケーションで問題になる可能性がありますか?ユーザーが2つのブラウザタブを開き、キャッシュ内の同じオブジェクトにアクセスする2つのリクエストを行った場合。それは可能ですか?モデルのすべてのクラスをスレッドセーフにする必要がありますか?
これらの問題をどのように回避しますか?
ありがとうございました。