私は、それぞれがデータベースに永続化されるさまざまな種類のオブジェクトを持つアプリケーションを持っています。これはこれまでトランザクションなしでうまく機能しており、それらを追加するために暴走するつもりはありません。ただし、オブジェクトのコレクション全体が更新を開始する前に、トランザクションを開始して、コレクション内のすべてのオブジェクトが成功した場合にのみデータベースが実際に更新されるようにする必要がある場合があります。
たとえば、リンゴのコレクションがあるとします。すべてのリンゴを更新するコマンドがコレクションに発行されます。[トランザクションの開始はここにあります] 各リンゴはコードを実行して自分自身を更新します。[トランザクションのコミット/ロールバックはここで発生する必要があります]。
私が抱えているヒッチは、現在、各更新がアトミックであることです(トランザクションに明示的にラップされていません)。各「リンゴ」に ID を渡して、ある種のキャッシュに格納されたトランザクションを識別することができますが、更新中にキャッシュが無効になり、不要な問題が発生するリスクがあります。
では、これに対する最善のアプローチは何ですか?