1

我有一个基于 Stuts2/Google Guice/JPA 构建的 java web 应用程序。它使用休眠作为 JPA 供应商。我想添加支持,以便可以在 Google 的 App Engine 上使用。当然,我遇到了查询和映射的问题。例如不支持多对多和连接。

我正在尝试提出让我的应用程序能够独立运行的最佳解决方案。例如,在 JPA 供应商支持的任何数据库或以 datanucleus 作为供应商的 Google App Engine 上创建一个 tomcat/jetty。

我想到的一种解决方案是将 JPA 用于我的独立实现,将 JDO 用于 Google 的 App Engine。显然,这需要我用 JPA 和 JDO 注释来注释我的模型对象,并为 DAO 层编写另一个实现。

还有其他人尝试过的其他好的解决方案吗?

4

2 回答 2

1

您可以将查询重新定位到 XML 配置。这样,您可以在一个配置中查询 RDBMS,在另一种配置中查询 BigTable。

另一个想法是 DataNucleus 也是 JPA 供应商。您可以通过将其设为 GAE 和 Servlet 容器上的主要 JPA 供应商来简化您的开发。JPA 供应商通常在他们对元数据所做的事情之间存在非常细微的差异,这可能会为您省去一些麻烦。

于 2010-01-10T22:01:10.187 回答
1

我认为你的方法是一个很好的方法。我认为良好的设计架构是最好的方法。您很可能会在 DAO 层中看到很多差异。一个好的设计会看到一个 DAO 接口,然后每个特定的模型访问都会有它自己的该接口的实现,例如 JpaMyObjectDAO、JpaGAEObjectDAO 等。和你一样,App Engine 在声明实体类时有一些特殊要求。也许您可以拥有不同版本的实体类(每个都符合其存储方案,如 App Engine 或 Hibernate),然后有一个通用 DTO 表示供您的更高层使用。

于 2010-01-10T22:11:46.717 回答