2011-03-22 21 views
2

在App Engine數據存儲區中執行事務(JDO)有兩種不同的方法。Google App Engine數據存儲事務的兩種不同方法 - 要使用哪種方法?

方法1:使用PersistenceManager的

try { 
    pm.currentTransaction().begin(); 
    // do stuff 
    pm.currentTransaction().commit(); 
} 
finally { 
    if (pm.currentTransaction().isActive()) 
     pm.currentTransaction().rollback(); 
} 

方法2:使用DatastoreService

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService() 
try { 
    Transaction txn = datastore.beginTransaction(); 
    // do stuff 
    txn.commit(); 
} 
finally { 
    if (txn.isActive()) { 
     txn.rollback(); 
    } 
} 

的是這兩種方法之間的功能區別?

+0

我相信這本質上是一個重複的http://stackoverflow.com/questions/4242524/java-app-engine-datastoreservice-or-persistencemanager – WhiteFang34 2011-03-22 05:34:11

+0

在旁註,我相信你的兩個例子,你應該把在try-finally之外的「開始」聲明。直到「開始」成功返回,您才真正擁有活動事務。 – Brummo 2011-03-22 07:33:46

+0

這不是該問題的重複。這兩個代碼塊都完全一樣 – 2011-03-22 13:13:55

回答

1

我相信JDO本身使用底層DatastoreService API進行事務處理。

如果您正在使用JDO來處理對象,則應該使用它的(JDOs/JPAs)持久性管理器事務方法。否則,你的對象將如何被持久化到底層數據存儲?

相關問題