【问题标题】:How do I set up a transaction within a void function in Java GAE using Objectify?如何使用 Objectify 在 Java GAE 中的 void 函数中设置事务?
【发布时间】:2020-11-18 13:20:16
【问题描述】:

我正在尝试使用 Objectify 在 Java 中的 void 函数中设置事务。这是维基文档。

import static com.googlecode.objectify.ObjectifyService.ofy;

Thing th = ofy().transact(() -> {
    Thing thing = ofy().load().key(thingKey).now();
    thing.modify();
    ofy().save().entity(thing);
    return thing;
});

我已阅读文档,但这对我来说仍然不清楚。如何在这个函数中实现这个事务?

public void addForm(
        String name, String link)
    throws Exception
    {
        Form newForm = new Form(name, link);
        ofy().save().entity(newForm).now();
    }

我需要能够调用 addForm 以便我不能将该函数包装在事务中,因为我将无法再次调用它。对吗?

【问题讨论】:

    标签: java google-app-engine google-cloud-datastore objectify


    【解决方案1】:

    我想这部分维基是here。在同一文档中,void 函数中有一个事务示例(我知道这是不同的主题,但代码是正确的):

    public void doSomeWork() {
        ofy().transact(() -> {
            doSomeMoreWork();
        });
    }
    

    所以把它翻译成addForm 应该是这样的:

    public void addForm(String name, String link)
        throws Exception
        {
            ofy().transact(() -> {
                Form newForm = new Form(name, link);
                ofy().save().entity(newForm).now();
            }
        }
    

    我认为没有必要为一个数据库操作创建事务,但是我想您以后想添加更多。您可以随时调用该函数。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      相关资源
      最近更新 更多