Neo4j和ORM(Hibernate)

2022-09-03 05:40:17

我从大学开始就一直在使用RDBMSes,并且真的在为NoSQL数据库的基本概念而苦苦挣扎......但我认为他们的概念真的很酷。

我相信我理解以下内容(如果我错了,请纠正我,因为这些在这里遇到了我的问题!):

  • NoSQL不是一些正式的规范;它是一个新的“品种”数据库背后的概念,这些数据库不是关系的,也不使用SQL
  • 因此,每个NoSQL系统都是不同的(例如,MongoDB是以JSON为中心的)

如果这些都是真的,那么让我们将注意力转移到Neo4j,一个“基于图形”的数据库。

在仔细阅读了该网站和PDF之后,Neo4j似乎不仅仅是一个数据库,而且还提供了一个Java API,基本上取代了对Hibernate等传统ORM工具的需求。

因此,我的最后一个问题实际上是要求澄清/确认最后一个断言,特别是:

  • 如果我的后端完全基于Neo4j,那么我就不需要Hibernate(这是我通常的ORM)吗?这两个 API 是互斥的,还是在使用它们之间有某种方式可以受益?

提前致谢!


答案 1

我从大学开始就一直在使用RDBMSes,并且真的在为NoSQL数据库的基本概念而苦苦挣扎......但我认为他们的概念真的很酷。

像Neo4j这样的图形数据库用连接到具有边的其他顶点的顶点来表示域。边包含其起点和终点顶点。每个顶点和边都可以有一个属性映射,这些属性是键值对,可用于存储有关顶点和边的其他信息。当然,您可以使用自己的域对此进行扩展,但事情很容易开始。

要了解这些概念的实际应用,我推荐 Gremlin 入门指南。Gremlin是一种用于遍历图形的特定于域的语言,可与Neo4j和其他几个图形数据库配合使用。Gremlin之于图形数据库,就像SQL之于关系数据库。

在你学习图形的时候,我不能强烈推荐Gremlin。在短短几分钟内,您就可以启动并运行Gremlin教程。Gremlin将为您提供一个REPL,让您尝试小图表并获得即时反馈。即使您不在生产系统中使用Gremlin,在REPL获得的知识也将帮助您验证设计,并可以作为更严格的单元测试和开发的先驱。

如果你更喜欢直接使用Neo4j的API,他们的遍历框架教程应该会有所帮助。

如果我的后端完全基于Neo4j,那么我就不需要Hibernate(这是我通常的ORM)吗?

由于你是Neo4j的新手,我建议你避免使用ORM,直到你首先了解ORM需要为你做什么。看看您将查询结果映射到您的域时会遇到多少痛苦。如果疼痛可以通过ORM来改善,那么Peter提到的Spring-Data框架可能会有所帮助。

很有可能,你可能会很好。我参与过几个项目,其中ORM引入的意外复杂性远远超过了收益。将查询结果映射到域绝不是系统中最复杂的部分。


答案 2

而不是Hibernate,我会看看 http://www.springsource.org/spring-data/neo4j 它是注释驱动的,由Spring支持并且运行良好。这是可以处理的吗?


推荐