データストアの書き込み操作はすべてアトミックです。エンティティの作成、更新、削除は「実行される」か「実行されない」かのどちらかです。操作が 失敗する原因として、同時にエンティティを変更しようとするユーザーが多すぎて競合頻度が高くなっていることが考えられます。また、アプリケーションが割 り当て制限に達したために操作が失敗する場合もあります。そのほか、データストアの内部エラーが原因の場合もあります。いずれの場合にも、操作の効果は適 用されず、Datastore API は例外を発行します。
JDO トランザクション API を使用し、
ClubMembers
という名前のオブジェクト(クラスは非表示)の counter
というフィールドの値を増やす例を次に示します。import javax.jdo.Transaction;import ClubMembers; // not shown
// ...
// PersistenceManager pm = ...;
Transaction tx = pm.currentTransaction();try {
tx.begin();
ClubMembers members = pm.getObjectById(ClubMembers.class, "k12345");
members.incrementCounterBy(1);
pm.makePersistent(members);
tx.commit();
} finally {
if (tx.isActive()) {tx.rollback();}}
0 件のコメント:
コメントを投稿