0

我剛剛注意到XG交易的docs' example使用put方法,它包含交易作爲參數,但沒有提到這樣做的必要性。GAE:是否需要使用交易作爲參數調用並獲取交叉組交易(XG)?

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單個參數(和獲取)使用事務:

如果有當前事務,該操作將在 執行該交易

我擔心XG交易。如果我只是在這個例子中使用了兩個實體的單個參數(並且我有很多這樣的代碼),它們是否仍然會在XG事務中執行?

回答

1

是的,他們都將在XG交易中執行。

如果您未明確指定事務,則將使用最近創建的事務。 DatastoreService存儲了使用beginTransaction創建的一系列交易,並且在執行投放時不使用明確的交易而使用最高的交易。它不會以任何不同的方式處理您的XG事務,它只會將它從堆棧中取出並使用它。