gpt4 book ai didi

java - 将应用程序引擎 JDO 应用程序移植到 MySql 后端

转载 作者:行者123 更新时间:2023-11-30 00:23:09 24 4
gpt4 key购买 nike

我有一个使用 JDO 的大小合适的 App Engine 应用程序,我想使用 DataNucleus 将其移植到 MySql 后端。我预计这不会太困难。然而,我遇到麻烦的一件事是主键。

App Engine 使用 Key 类来表示主键。这个类基本上是几个指示对象类型和名称的字符串的组合,加上对父键的可选引用(直到最顶层父键的整个键链构成了完整的键)。我的关键声明如下所示:

@PersistenceCapable
class Whatever {
...
@PrimaryKey
private Key key;
...
}

我已准备好实现我自己的 Key 版本(及其关联的类 KeyFactory),但看起来我实际上可能无法像在 App Engine 中那样将其用作真正的主键。我没有看到任何方法可以使用像这样的自定义类作为普通 DataNucleus JDO 的键。尽管文档似乎确实表明 DataNucleus 为每个主键创建一个键类,但该键类通常是自动生成的,并且您实际上并未将该键类声明为要存储的类的成员。即使在您有多个主键的情况下,您实际上定义了主键类,也可以将键的组成部分存储在您想要存储的类中:

@PersistenceCapable(objectIdClass=PersonPrimaryKey.class)
class Person {
@PrimaryKey
private String firstname;
@PrimaryKey
private String lastname;
// You can't do this:
// private PersonPrimaryKey;
...
}
class PersonPrimaryKey {
private String firstname; // has to match above
private String lastname; // has to match above
... // etc other methods
}

复合键实际上是与 App Engine 最接近的东西,但最终我也不知道它们将如何解决我的问题,因为它们有类似的限制。

有什么想法吗?除了 PrimaryKeys 中使用的 Key 对象之外,我还有很多地方的对象存储其他类型对象(外键)的键,再加上查询查找中其他地方使用的 Keys,它遍布整个代码库。如果我必须解决这个问题,我将必须实现我自己的 Key 版本来用作引用类,然后放入一些额外的装备来将 Key 类转换为 String 或从 String 转换为实际的 JDO 主键。我宁愿不这样做,因为它看起来很困惑,但我不知道如何做到这一点。

最佳答案

如果您对关系使用了“Key”(即对您的模型进行了混杂处理以适应那些 GAE 数据存储限制),那么您将无法直接针对 RDBMS 运行它(如果您希望这等同于RDBMS 中的关系和 FK)。这些需要更改为相关对象的真实对象引用。

至于类(class)的 PK,我记得有人提到了 2009 年 GAE 推出时的 IBM 视频,其中他们采用了 GAE“应用程序”(以 Key 作为主键字段等)并在一些人的帮助下包含 Key 类等的小 jar,使其可针对 RDBMS 运行;有一段时间没看到了,也许是在 YouTube 上?或者,您可以为 Key 类型提供 DataNucleus“TypeConverter”,看看这是否有效?

关于java - 将应用程序引擎 JDO 应用程序移植到 MySql 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23074886/

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