Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Hibernate ORM和OGM组合SQL和NOSQL数据库_Java_Hibernate_Hibernate Ogm_Polyglot Persistance_Nosql - Fatal编程技术网

Java 使用Hibernate ORM和OGM组合SQL和NOSQL数据库

Java 使用Hibernate ORM和OGM组合SQL和NOSQL数据库,java,hibernate,hibernate-ogm,polyglot-persistance,nosql,Java,Hibernate,Hibernate Ogm,Polyglot Persistance,Nosql,我有一个使用SQL Server的应用程序。我想使用NOSQL存储,我决定使用图形,因为我的数据是高度连接的。Neo4j是一种选择 我希望能够在不接触应用程序层的情况下切换数据库,比如只修改一些xml配置文件。 我看了一些在web上公开的示例,我看到ORM和OGM配置应用程序的方式不同,每个应用程序的配置文件都有自己的名称,更重要的是有自己的结构。查看每个会话的代码发现,它们初始化会话的方式也不同,这听起来不符合我的想法 我的问题是:“在不涉及现有应用程序代码的情况下在两个数据库之间切换是否可能

我有一个使用SQL Server的应用程序。我想使用NOSQL存储,我决定使用图形,因为我的数据是高度连接的。Neo4j是一种选择

我希望能够在不接触应用程序层的情况下切换数据库,比如只修改一些xml配置文件。 我看了一些在web上公开的示例,我看到ORM和OGM配置应用程序的方式不同,每个应用程序的配置文件都有自己的名称,更重要的是有自己的结构。查看每个会话的代码发现,它们初始化会话的方式也不同,这听起来不符合我的想法

我的问题是:“在不涉及现有应用程序代码的情况下在两个数据库之间切换是否可能或可行?我可以添加一些内容,但不涉及已经存在的内容。”。例如,使用Hibernate在SQL和NOSQL数据库之间建立一个纯多语言持久性是一个好主意

在深入挖掘之前,我想听听你们的意见。我们这里有冬眠的人吗

的目标是为各种NoSQL数据存储提供统一的抽象。正如我们所说,这个项目还很年轻,所以我不确定你是否能立即采用它

还有交易问题。如果应用程序设计为使用SQL事务,那么当您切换到NOSQL解决方案时,情况将发生根本性的变化

使用抽象层有利于可移植性,但不能提供本机查询的所有功能。JP-QL也有同样的问题,它只涵盖了,缺少对窗口函数或CTE的支持


Polyglot持久性是一个很好的特性,但请尝试使用单独的存储库,如提供。从体系结构的角度来看,我发现这要灵活得多。

因此,在您看来,从单个代码库在JPA关系存储和面向文档的数据库之间切换是不现实的?我不推荐这样做。我认为最好将它们分开,可能在清晰的服务外观后面。