存在一个非常简单的要求:支持一些RDBMS(我打算通过使用JPA)和MongoDB(spring-data-mongodb是首选)来实现持久性。更准确地说,要么必须配置和使用其中一个,我不是在谈论跨店。
程序应如下:编写应用程序代码,将.war交付给客户,在配置文件中,客户将持久性信息(如databaseurl)(即mongodb:localhost / test或jdbc:oracle:thin: 1521 @富)。 此外,扩展其他数据存储区(如couchdb)的实现会很不错。
是否有最佳做法或至少任何一种非太多的开销解决方案并不是那么脏?
答案 0 :(得分:1)
Eclipselink是一个选项吗?最新支持RDBMS和NOSQL(包括Mongo)的JPA
https://blogs.oracle.com/theaquarium/entry/jpa_and_nosql_using_eclipselink
答案 1 :(得分:0)
DataNucleus JPA允许您通过对连接URL的简单更改来持久保存到RDBMS,MongoDB和许多其他数据存储(LDAP,HBase,AppEngine,Neo4j等),并且已经完成了一些时间
答案 2 :(得分:0)
我目前正在开发一个有类似需求的项目。我可以根据自己的经验告诉你。
我认为这里的主要问题不在于技术,而在于如何构建数据。为此,我建议您使用AbstractFactory和FactoryMethod设计模式。回归技术我使用Morphia for MongoDB和JPA for MySQL(作为一个例子),它的工作就像一个魅力。
因此,最简单的方法是为要保留的所有对象创建接口,然后使用Morphia标记为MongoDB执行实现,为JPA标记执行另一个实现。为MongoDB创建一个工厂,它将处理MongoDB对象中的所有CRUD操作,并对JPA工厂执行相同的操作。
当应用程序启动时,您只需验证用户对持久性的选择,然后初始化相应的工厂。