gpt4 book ai didi

google-app-engine - 将关系存储为 Objectify 键与长 ID

转载 作者:行者123 更新时间:2023-12-04 04:39:59 25 4
gpt4 key购买 nike

我正在使用 GAE 开发 RESTfull 网络服务。我的技术栈主要围绕 Jersey、Spring 和 Objectify。

如果您不知道 Objectify 是...

“Objectify 是专为 Google App Engine 数据存储设计的 Java 数据访问 API。它占据了“中间地带”;比 JDO 或 JPA 更容易使用和更透明,但比低级 API 更方便。 Objectify 旨在让新手立即提高工作效率,同时还可以展示 GAE 数据存储的全部功能。”

https://code.google.com/p/objectify-appengine/

到目前为止,我已经使用 Objectify Keys 在我的模型中存储关系。像这样...

public class MyModel {

@Id private Long id;
private Key<MyOtherModel>> myOtherModel;
...

与 Long ID 相比,Objectify 键提供了额外的功能,但它们可以从 Long ID 和 MyOtherModel.class 使用静态方法 Key.create(...) 创建,
Key.create(MyOtherModel.class, id)

所以我不必在模型级别将关系存储为 Objectify 键,我只是认为它更一致。

问题是我需要编写大量附加代码来创建 XML 适配器,以便在将模型对象序列化为 JSON 并将它们从 JSON 反序列化为 Java 对象时将 Objectify 键转换为长 ID。

我正在考虑使用 Long IDs 并在需要时在 DAO 中创建一个 Objectify Key。此外,这将从不是 DAO 的任何内容中删除任何 Objectify 特定代码。

我想从更有经验的程序员那里获得一些观点。我从未创建过这种规模的软件,即几千行代码。

非常感谢大家。

最佳答案

我也是一个经验丰富的数据存储/对象化开发人员,所以我只是在这里沉思。

我明白你的意思,用 Long id 替换 MyModel 中的 Key<> 类型会为你简化事情。不过我会注意到, Key<> 对象可以包含一个路径(以及一个种类和一个 id)。因此,如果您的数据模型变得更加复杂并且 MyOtherModel 不再是根类型,那么您从 Long id 生成 Key<> 的能力就会崩溃。

如果您知道这不会发生,或者不介意稍后更改 MyModel,那么我想这不是问题。

对于您的序列化格式,我建议您使用 String 来保存您的 key 或 ID。您的 Long id 可以转换为字符串,对于 JSON 无论如何都必须转换(因此不会降低效率),但稍后也可以使用相同的字符串来保存完整的 Key。

关于google-app-engine - 将关系存储为 Objectify 键与长 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041231/

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