0

我正在开发一个需要在 App Engine 和其他 Java 应用服务器上运行的项目。在 App Engine 中我们使用数据存储,而在其他环境中我们将使用传统的关系数据库(主要是 MySQL)。

我想知道是否有可能“拥有一个适用于两者的 JDO/JPA 模型”。

如果它是可能的。如何?具体来说,我们如何处理 Key?Datastore 要求我们使用它自己的 Key 对象或使用“Key as encoding string”,我们如何将这些键移植到关系数据库。

如果没有,最佳做法是什么?我们现在的想法是定义抽象 DAO,并有两组 DAO 实现。我相信最好的方法是将 Objectify 用于数据存储,将 JPA 用于关系数据库。但是这样我们就无法利用 GWT RequestFactory(我们正在使用的另一种技术)。或者我们可以吗?

4

3 回答 3

1

显然,JDO 旨在处理所有数据存储,无论是 RDBMS、ODBMS、文档、基于地图、基于 Web、基于文档、基于文件……等等。是的,这种便携性是现实的。如果您不想要可移植性,您可以使用 Objectify,但您说您想要可移植性,所以这不是一个选项(所以不知道为什么您认为它是“最佳方式”)。您可以在所有数据存储中使用字符串作为 PK。

于 2013-03-21T15:49:22.933 回答
0

I don't know about GAE but I know JDO should be datastore independent so you can map your classes using JDO annotations and make sure while you are doing that, you aren't using any RDBMS based extensions (i.e. Datanucleus), i'm not sure if there are such extensions in the first place.

For keys, well obviously you shouldn't use GAE's but again, I'm not sure if it's a must or not.

于 2013-03-21T00:38:12.107 回答
0

我发现很难在关系数据库和分层数据库(这里的数据存储)上匹配相同的“持久性”模型,因为大多数时候它需要以不同的方式思考/构建数据。

例如,您可能需要跨多个实体复制数据,以便能够使用数据存储对其运行查询。

从您所说的关于您的项目的少数几个方面来看,如果您需要在 Google App Engine 和传统服务器(tomcat、JBOSS、WebSphere 等)中同时拥有它,我会使用 Google Cloud SQL 来保持我的数据模型相同。 .

或者,如果您在这两种情况下都需要一个分层数据库,请在您的“传统”服务器上安装一个开源数据库......

我们首先在谈论什么样的项目?:)

于 2013-03-24T13:48:50.233 回答