我已经有一些使用 Hibernate 的经验,但是,如果我是正确的,没有办法使用它来访问像 Versant 的 VOD 这样的对象数据库。由于他们刚刚发布了支持 JPA 的预览版,我想知道是否可以使用我有限的 Hibernate 技能来使用 JPA 的对象数据库。如果有人有经验,请告诉我这些版本是否兼容。
最好的。
哈利
我已经有一些使用 Hibernate 的经验,但是,如果我是正确的,没有办法使用它来访问像 Versant 的 VOD 这样的对象数据库。由于他们刚刚发布了支持 JPA 的预览版,我想知道是否可以使用我有限的 Hibernate 技能来使用 JPA 的对象数据库。如果有人有经验,请告诉我这些版本是否兼容。
最好的。
哈利
让我先声明一下:我是 Versant JPA 的开发人员之一。
要使用 Versant JPA,具备基本的 JPA 技能就足够了。
我们提供了一个教程,在您安装“Versant JPA”技术预览和提供的 Eclipse 插件后,该教程应该立即可用。只需查看此文档和提供的“Versant JPA 入门”手册,即可初步了解它的易用性。
我不同意 DataNucleus 的一些陈述:是的,Versant 是 ODBMS 而不是 RDBMS,因此我们忽略了任何特定于映射的内容 - 您的 Java 数据模型实际上与 Versant 数据库中的数据模型相同。然而,除了所有与映射相关的东西之外,JPA 也是对象数据库的自然 API。我不同意,JPQL 的设计与 JPA 的设计考虑了 RDBMS 的事实之间存在很大的相关性。(实际上微软已经通过将 LINQ 抽象到与数据存储无关的级别来证明这一点。)
All the big differences between Versant JPA and RDBMS based JPA implementations are described in a separate chapter in our "Getting Started with JPA" guide. The biggest one might be our restriction, to have an @Id field of type "long" or "java.lang.Long", which is automatically set by our runtime.
We do also have a JDO implementation, but I would recommend to try out our Versant JPA technical preview (as the term "preview" suggests, it is not feature complete yet).
Christian Romberg
如果您使用对象数据库,为什么需要 Hibernate?Hibernate 是一个 ORM 工具,代表对象关系映射。如果您不使用关系数据库,那么 Hibernate 有什么用?
这是一个声称可以与 JPA 一起使用的 ODB;也许您可以适应或效仿 Versant 的 VOD。
您不会对不同的软件使用任何“休眠技能”;你使用你的 JPA 技能。它是一个标准的 API,因此具有相同的元数据和相同的持久性代码的相同类。唯一不同的是您可能在persistence.xml 中使用一些不同的持久性属性。
不用说,JPA 只是围绕 RDBMS 设计的,并且各个部分(尤其是 JPQL)显然不适用于 ODBMS,因此它不像您希望的那样适合该数据存储的 API,而 JDO 之类的东西会更适合(VOD 也支持 IIRC)......但无论如何