gpt4 book ai didi

java - 将 GWT 与持久对象一起使用的正确方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 03:30:08 24 4
gpt4 key购买 nike

我目前正在使用 GWT 通过 Google App 引擎开发一个简单的 Web 应用程序。应该指出的是,这是我第一次尝试这样的任务。

我遇到了以下问题/困境:

我有一个简单的类(getters/setters,仅此而已。为了清楚起见,我将这个类称为 DataHolder),我想让它持久化。为此,我使用了 JDO,它要求我添加一些注释,更具体地说,添加一个 Key 字段用作主键。

问题是使用 Key 类需要我导入 com.google.appengine.api.datastore.Key 这在服务器端没问题,但随后我不能在客户端使用 DataHolder,因为 GWT 不允许(据我所知)。

所以我创建了一个姊妹类 ClientDataHolder,它几乎是相同的,尽管它没有所有的 JDO 注释和 Key field 。

现在这确实有效,但感觉我做错了什么。使用这种方法需要为我希望拥有的每个实体维护两个单独的类。

所以我的问题是:有更好的方法吗?

谢谢。

最佳答案

您认为保留对象的两个版本感觉不对是正确的——GWT 的整个想法是您可以在客户端共享您的服务器端对象,如果您开始分离这两个版本,您就是没有充分利用 GWT。

关于解决您的问题,我只听说过关于 Objectify 的好消息,一个进入数据存储区的备用 API,专为 App Engine 构建。在其众多优点中,它也是 GWT 安全的,因此您可以在客户端和服务器之间来回传递 key 和所有内容。 Read more here .

但是,如果您想使用 JDO/JPA,您可以将您的实体 ID 存储为字符串或长整型,如下所示:

@PersistenceCapable(identityType = IdentityType.APPLICATION)  
public class SomeDomainClass implements Serializable {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
String id;
}

阅读更多相关信息 here (这是我无耻地偷了那个代码示例的地方)

关于java - 将 GWT 与持久对象一起使用的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com