public class TransactionAwareProxyFactory<T>
extends java.lang.Object
トランザクション対応オブジェクト(リスト、セット、マップなど)のファクトリ。ファクトリによって作成されたインスタンスでメソッドが呼び出されたときにトランザクションがアクティブである場合、トランザクションはターゲットオブジェクトのコピーを作成し、そのコピーに対してすべての操作を実行します。トランザクションがコミットした場合にのみ、コピーでターゲットが再初期化されます。
データベースを必要とせずにトランザクションの振る舞いをテストするためのコレクションやマップとうまく連携します。基本実装はリスト、セット、マップを処理します。サブクラスは、begin(Object)
および commit(Object, Object)
を実装して、他のリソースのサポートを提供できます。
通常、マルチスレッドでの使用は意図されていませんが、コレクションの append only version
は、マップ内の異なるキーで動作するスレッドを分離します。(スレッドは、同じトランザクションで作成されたエントリの削除に制限されています。)
修飾子と型 | メソッドと説明 |
---|---|
protected T | begin(T target) トランザクション内で使用できるターゲットのコピーを作成して、変更を元のターゲットから分離します。 |
protected void | commit(T copy, T target) 作業コピーの状態を取り、それを元のターゲットにコミットします。 |
static <T> java.util.List<T> | createAppendOnlyTransactionalList() |
static <K,V> java.util.concurrent.ConcurrentMap<K,V> | createAppendOnlyTransactionalMap() |
static <T> java.util.Set<T> | createAppendOnlyTransactionalSet() |
static <T> java.util.List<T> | createTransactionalList() |
static <T> java.util.List<T> | createTransactionalList(java.util.List<T> list) |
static <K,V> java.util.Map<K,V> | createTransactionalMap() |
static <K,V> java.util.Map<K,V> | createTransactionalMap(java.util.Map<K,V> map) |
static <T> java.util.Set<T> | createTransactionalSet() |
static <T> java.util.Set<T> | createTransactionalSet(java.util.Set<T> set) |
protected final T begin(T target)
target
- ターゲットオブジェクト (リスト、セット、マップ)protected void commit(T copy, T target)
copy
- 作業コピー。target
- ファクトリの元のターゲット。public static <K,V> java.util.Map<K,V> createTransactionalMap()
public static <K,V> java.util.Map<K,V> createTransactionalMap(java.util.Map<K,V> map)
public static <K,V> java.util.concurrent.ConcurrentMap<K,V> createAppendOnlyTransactionalMap()
public static <T> java.util.Set<T> createAppendOnlyTransactionalSet()
public static <T> java.util.Set<T> createTransactionalSet()
public static <T> java.util.Set<T> createTransactionalSet(java.util.Set<T> set)
public static <T> java.util.List<T> createAppendOnlyTransactionalList()
public static <T> java.util.List<T> createTransactionalList()
public static <T> java.util.List<T> createTransactionalList(java.util.List<T> list)