【问题标题】:Two different methods for Google App Engine Datastore Transactions -- which to use?Google App Engine 数据存储区事务的两种不同方法 - 使用哪一种?
【发布时间】:2011-03-22 02:41:20
【问题描述】:

在 App Engine 数据存储区中执行事务 (JDO) 有两种不同的方式。

方法一:使用PersistenceManager

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

方法二:使用DatastoreService

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

这两种方法的功能区别是什么?

【问题讨论】:

  • 我相信这本质上是stackoverflow.com/questions/4242524/…的复制品
  • 附带说明,我相信在您的两个示例中,您应该将“开始”语句放在 try-finally 之外。在“开始”成功返回之前,您实际上并没有活跃的事务。
  • 这不是那个问题的重复。这两个代码块做的事情完全相同

标签: java google-app-engine google-cloud-datastore jdo


【解决方案1】:

我相信 JDO 本身使用低级 DatastoreService API 进行事务处理。

如果您使用 JDO 来处理对象,您应该使用它的 (JDO/JPA) 持久性管理器事务方法。否则,您的对象将如何持久化到底层数据存储区?

【讨论】:

    猜你喜欢
    • 2011-08-08
    • 2011-04-15
    • 2010-12-26
    • 2013-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多