このシナリオを想像してみてください。
データベースから削除する必要のあるいくつかのエンティティのIDの配列(つまり、レコードを3番目のテーブルに識別するいくつかの外部キー)と、更新/挿入する必要のあるいくつかのエンティティのIDの配列(に基づいて)があります現時点では重要ではないいくつかの基準)。
それらのエンティティを削除するにはどうすればよいですか?
- dbからそれらをロードします(リポジトリの方法)
delete()
得られたオブジェクトを呼び出すflush()
エンティティマネージャーに電話する
そのシナリオでは、を呼び出す前に他のレコードを更新/挿入できるため、すべての操作をアトミックにすることができますflush()
。
しかし、なぜそれらを削除するためだけにいくつかのレコードをデータベースからロードする必要があるのでしょうか?だから私は自分の個人的なDQLクエリを(レポに)書き、それを呼び出しました。
問題は、その関数をリポジトリに呼び出すと、この操作がすぐに実行されるため、「アトミック性」が保証されないことです。
では、2番目の「delete-option」に従って、この障害を「ジャンプ」するにはどうすればよいでしょうか。