我可以使用Guice中的@Transactional与Google App Engine数据存储区吗?

时间:2013-04-14 15:21:07

标签: java google-app-engine transactions google-cloud-datastore guice

我可以这样做吗?即使我没有使用ds.get(tx, key)ds.put(tx, key)

,它仍然是一个交易吗?
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);
    }
}

1 个答案:

答案 0 :(得分:0)

我不习惯Guice,但是和其他任何依赖注入框架一样,我想你必须在模块配置中声明某种TransactionManager吗? 在这种情况下,哪些不存在,或者至少没有Google做广告。 也许你会在社区中找到你需要的东西,看看GitHub ......但我再次高度怀疑Guice是否支持低级数据存储的开箱即用。 你可能在Guice中有一些JPA支持吗?

或者您可以开发自己的事务管理器...... 我用Spring开发了自己的@DatastoreTransactional注释,但遗憾的是在生产运行时使用Spring AOP失败,请参阅: Using Spring AOP on App Engine causes StackOverflowError