2

我可以這樣做嗎?即使我沒有使用ds.get(tx, key)ds.put(tx, key),它仍然是交易嗎?我可以使用Guice的@Transactional和Google App Engine的數據存儲嗎?

public class MyClass { 

    private final DatastoreService ds; 

    @Inject 
    public MyClass(DatastoreService ds) { 
     this.ds = ds; 
    } 

    @Transactional 
    public void plusOne() { 
     Key someKey; 
     Entity thing = ds.get(someKey); 
     int newValue = thing.getProperty("prop") + 1; 
     thing.setProperty("prop", newValue); 
     ds.put(thing); 
    } 
} 

回答

0

我不習慣吉斯,但像任何其他依賴注入框架我想你將不得不宣佈某種形式的事務管理器在你的模塊配置? 在這種情況下,哪些不存在,或者至少沒有被谷歌廣告。 也許你會在社區中找到你需要的東西,看看GitHub ......但是我很懷疑Guice是否支持低級數據存儲。 雖然你可能在Guice中有一些JPA支持?

或者您也可以開發自己的事務管理器... 我已經開發了我自己的@DatastoreTransactional註解與Spring,但不幸的是使用在生產運行Spring AOP的失敗,請參閱: Using Spring AOP on App Engine causes StackOverflowError

相關問題