私の理解では、トランザクションは完了してもすぐにはフラッシュされません。それらはメモリ内のキャッシュに置かれ、EntityManager がそうすることが費用対効果が高いと判断した場合にのみ DB に書き込まれます。この場合、L1 キャッシュが使用されていると思いますが、間違っていたら訂正してください。
私の質問は、分散環境では、永続コンテキストによって使用されるキャッシュは分散されていますか?
私の理解では、トランザクションは完了してもすぐにはフラッシュされません。それらはメモリ内のキャッシュに置かれ、EntityManager がそうすることが費用対効果が高いと判断した場合にのみ DB に書き込まれます。この場合、L1 キャッシュが使用されていると思いますが、間違っていたら訂正してください。
私の質問は、分散環境では、永続コンテキストによって使用されるキャッシュは分散されていますか?
L1 キャッシュ (セッション キャッシュ、永続化コンテキスト) は、環境が分散されているかどうかに関係なく、常に同じように機能します。セッション キャッシュはセッションに属し、同じマシンでも異なるマシンでも複数のセッションを持つことができるため、問題はありません。
分散環境で使用する場合は、二次キャッシュに注意する必要があります。
アプリケーションをクラスターで実行する場合、JPA プロバイダーがサポートしている場合は、クラスター対応の L2 キャッシュ実装を使用する必要があります (たとえば、 21.2. Hibernate ドキュメントのセカンド レベル キャッシュを参照してください)。
他のアプリケーションが同じデータベースにアクセスしている場合は、キャッシング戦略を慎重に構成して、重大なケースでの不一致を回避し、その他のケースでの不一致の可能性を許容する必要があります。