1
之外定義的基本事務看起來像這樣:物化 - OFY()在方法交易
import static com.googlecode.objectify.ObjectifyService.ofy;
import com.googlecode.objectify.Work;
// If you don't need to return a value, you can use VoidWork
Thing th = ofy().transact(new Work<Thing>() {
public Thing run() {
Thing thing = ofy().load().key(thingKey).now();
thing.modify();
ofy().save().entity(thing);
}
});
當OFY()load()和其他OFY()方法從它們具有的所有事務中調用。交易的好處,比如原子。 但是,使用包含ofy()方法的Util方法是否會轉義該事務?像下面這樣。
// If you don't need to return a value, you can use VoidWork
Thing th = ofy().transact(new Work<Thing>() {
public Thing run() {
Util.modify(thingKey);
}
});
其中,Util定義在某處。
public class Util {
public static modify(thingKey) {
Thing thing = ofy().load().key(thingKey).now();
thing.modify();
ofy().save().entity(thing);
}
}
我想了很多,但在開始編程之前需要確定。對於我的想法,你能詳細說明這是如何工作的或鏈接文檔嗎?謝謝。 –
第二種情況只是一種抽象,所以它必須工作相同 - 它更像是一個純java主題。然而,爲了幫助理解,您可以使用調試器追蹤到事務處理調用,並且您會發現一些設置和完成代碼 - 您的Work實現run()方法調用。該代碼設置了一些狀態,然後就知道這樣的事情是有效的。 –
Objectify的事務上下文是一個線程本地的。 – stickfigure