Objectify/Datastore - 交易中的交易
Objectify/Datastore - transaction inside a transaction
如果您将一个交易放在 objectify/datastore 中的一个交易中,会发生什么情况?执行顺序是什么,事情是怎么解决的?
例如,
1)如果内层交易失败,外层交易是否也会失败?
2) 如果外层事务失败,内层事务恰好完成了会回滚吗?
// Outer Transaction
Thing th = ofy().transact(() -> {
Thing thing = ofy().load().key(thingKey).now();
thing.modify();
ofy().save().entity(thing);
// Inner Transaction
// This transaction could be in another method used in various other places
Thing th2 = ofy().transact(() -> {
Thing thing2 = ofy().load().key(thingKey2).now();
thing2.modify();
Thing thing2 = ofy().load().key(thingKey3).now();
thing3.modify();
ofy().save().entity(thing2);
ofy().save().entity(thing3);
return thing;
});
return thing;
});
这里有大量关于此的文档:
https://github.com/objectify/objectify/wiki/Transactions
您想问什么问题那里没有答案?
如果您将一个交易放在 objectify/datastore 中的一个交易中,会发生什么情况?执行顺序是什么,事情是怎么解决的?
例如,
1)如果内层交易失败,外层交易是否也会失败?
2) 如果外层事务失败,内层事务恰好完成了会回滚吗?
// Outer Transaction
Thing th = ofy().transact(() -> {
Thing thing = ofy().load().key(thingKey).now();
thing.modify();
ofy().save().entity(thing);
// Inner Transaction
// This transaction could be in another method used in various other places
Thing th2 = ofy().transact(() -> {
Thing thing2 = ofy().load().key(thingKey2).now();
thing2.modify();
Thing thing2 = ofy().load().key(thingKey3).now();
thing3.modify();
ofy().save().entity(thing2);
ofy().save().entity(thing3);
return thing;
});
return thing;
});
这里有大量关于此的文档:
https://github.com/objectify/objectify/wiki/Transactions
您想问什么问题那里没有答案?