Springマネージドトランザクションでチェックポイントを設定する方法はありますか?何か問題が発生した場合、ロールバックは最後のチェックポイントまでのみ発生するはずです。
3 に答える
IMOは、トランザクションと言う場合、すべてまたはなしのいずれかである必要があります。
チェックポイントまでロールバックを実行するということは、部分的なトランザクションを実行していることを意味します。
それでも、特定の時点までロールバックしたい場合は、タスクをトランザクション数に変換することをお勧めします。(複数のトランザクションに変換できる場合)
私はアジンキャの答えを2番目にしています。Springには、テクノロジーに依存しないトランザクション抽象化があり、さまざまなテクノロジー(Hibernate、JPA、JDBCなど)の実装がありますが、必要と思われる機能を備えているのはそのうちのいくつかだけです。
Spring Transactionsはシンプルに保たれているため、サービスレイヤーで何も変更せずに、永続レイヤーを新しいテクノロジーに切り替えることができます。サポートされているすべてのプラットフォームで利用できるのは最も一般的なトランザクションのメタファーのみであるため、この柔軟性には電力が犠牲になります。制限に耐え、タスクをいくつかのサブタスクに変換する方法を学びます。
春にSavePointManagerを使用してチェックポイントを管理できます。これを最初に使用するには、TransactionTemplateを実行し、プログラムによるトランザクション管理を実行して、トランザクションのステータスを制御できるようにする必要があります。
次に、SavePointManagerメソッドを使用してチェックポイントを作成します。
これをアスペクトで管理したい場合は、顧客の注釈とアスペクトを使用して、SpringBeanを介して非常に簡単に記述できます。