JPA规范适用于NoSQL数据库。

3

我刚听说JPA规范现在可以用于nosql数据库。我的问题是,它和我们用于关系型数据库的JPA规范是否相同?因为关系型数据库和nosql数据库之间有很多区别,特别是当我们谈论事务时,两者完全不同。Oracle发布了一个涵盖nosql数据库新变化的新规范吗?

敬礼


JPA 是关于对象关系映射的,因此它不能涉及 NoSQL 数据库。你需要找另一个规范。 - duffymo
有Hibernate OGM,它是nosql数据库的JPA实现之一。 - TheBlack
Hibernate ORM 在 JPA 之前出现;我猜这个是没有规范就诞生了。我不使用任何一个,我认为两者都浪费时间,只会增加不必要的依赖和复杂性。它们是给不懂 SQL 的人用的。 - duffymo
1个回答

2

JPA完全是为关系型数据库数据存储定义的。请参阅Oracle规范。

一些著名的JPA实现已经扩展了他们对JPA的支持,以允许使用同一API使用一些非关系型数据库(最初这样做的是DataNucleus JPA,但自那以后Hibernate和EclipseLink也复制了这一点)。虽然您可以使用相同的API进行持久化,但您必须意识到您需要做出一些妥协,因为特别是查询语言并不总是适合非关系型数据库。我不知道是否有计划发布面向非关系型数据库的JPA规范。

有一个适用于关系型数据库和非关系型数据库的JDO(Java数据对象)持久性规范,而且JDO API更适合许多不同类型的数据存储。


你的意思是JPA只适用于关系型数据库,但是有很多关于JPA用于nosql数据库的讨论和谈话,而且还有一个针对nosql数据库的Hibernate版本叫做Hobernate Object/Grid Mapper,你对此有什么看法?至于JPA规范,是否有适用于nosql数据库的新版本? - TheBlack
我已经说过JPA仅适用于关系型数据库,因此该句告诉您非关系型数据库没有新版本。更新答案以提及JDO API。本网站不适合“你对...有何看法”类型的问题。 - Neil Stockton
为什么他们要用它来处理NoSQL数据库呢?正如你所说的,这是为关系型数据库设计的,但并没有针对NoSQL数据库的新版本。 - TheBlack
为什么?他们允许用户选择将其用于非关系型数据库。对于供应商允许超出规范的额外选项并不违法。 - Neil Stockton
如何在使用JPA(用于关系型数据库)的情况下,将其用于NoSql数据库,考虑到关系型数据库和NoSql数据库之间存在许多差异。这是如何实现的? - TheBlack
本以为这很明显。您有名为“em.persist”、“em.remove”的方法,可用于持久化和删除对象;几乎没有争议。正如先前所说的一样,妥协点在特定的查询语言上。 - Neil Stockton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接