2

存在一个听起来很简单的要求:支持几个 RDBMS(我打算通过使用 JPA 来实现)和 MongoDB(首选 spring-data-mongodb)来实现持久性。更准确地说,必须配置和使用一个或另一个,我不是在谈论交叉商店。

该过程应如下:编写应用程序,将 .war 交付给客户,客户在配置文件中放置持久性信息,如 databaseurl(即 mongodb:localhost/test 或 jdbc:oracle:thin:1521@foo )。此外,最好扩展其他数据存储(如 couchdb)的实现。

是否有最佳实践或至少任何不那么脏的非过多开销解决方案?

4

3 回答 3

1

Is Eclipselink an option? The latest supports JPA for both RDBMS and NOSQL (including Mongo)

https://blogs.oracle.com/theaquarium/entry/jpa_and_nosql_using_eclipselink

于 2012-08-15T04:45:08.373 回答
0

DataNucleus JPA允许您持久保存到 RDBMS、MongoDB 和许多其他数据存储(LDAP、HBase、AppEngine、Neo4j 等),只需对连接 URL 进行简单更改,并且已经这样做了一段时间

于 2012-08-15T05:26:29.617 回答
0

我目前正在开发一个具有类似需求的项目。我可以根据我的经验给你建议。

我相信这里的主要关注点不是关于技术,而是更多关于如何构建数据。为此,我建议您使用 AbstractFactory 和 FactoryMethod 设计模式。关于技术,我在 MongoDB 中使用 Morphia,在 MySQL 中使用 JPA(作为示例),它的工作原理非常棒。

所以最简单的方法是为你想要持久化的所有对象创建接口,然后用 Morphia 标签和另一个用 JPA 标签为 MongoDB 做一个实现。为 MongoDB 创建一个工厂,它将处理 MongoDB 对象中的所有 CRUD 操作,并对 JPA 工厂执行相同的操作。

当应用程序启动时,您只需验证用户选择的持久性,然后初始化相应的工厂。

于 2012-10-03T16:00:01.180 回答