我刚刚注意到XG事务的docs' example使用包含事务作为参数的put方法,但没有提到以这种方式执行它的必要性。
TransactionOptions options = TransactionOptions.Builder.withXG(true);
Transaction txn = datastore.beginTransaction(options);
Entity a = new Entity("A");
a.setProperty("a", 22);
datastore.put(txn, a);
Entity b = new Entity("B");
b.setProperty("b", 11);
datastore.put(txn, b);
txn.commit();
根据API,单个参数put(和get)使用事务:
如果有当前事务,则此操作将在其中执行 该交易
我关心的是XG交易。如果我只是在那个例子中使用两个实体的单个参数(我有很多这样的代码),它们是否仍然在XG事务中执行?
答案 0 :(得分:1)
是的,他们都将在XG交易中执行。
如果您未明确指定交易,则将使用最近创建的交易。 DatastoreService
存储使用beginTransaction
创建的一堆事务,并在没有显式事务的情况下执行puts时使用顶层事务。它不会以任何不同的方式处理您的XG事务,它只会将其从堆栈中拉出并使用它。