2011-12-12 90 views
2

我已經有了Hibernate的一些經驗,但是如果我沒錯,就沒有辦法用它來訪問像Versant的VOD這樣的對象數據庫。由於他們剛剛發佈了一個preview with JPA support,我想知道是否可以使用我有限的Hibernate技能與JPA一起使用對象數據庫。如果有人有經驗,請讓我知道這些版本是否兼容。Oibernate JPA與Hibernate的實現差異

最好。

Harry

回答

4

讓我首先聲明:我是Versant JPA的開發人員之一。

要使用Versant JPA,應該足以擁有基本的JPA技能。

我們提供了一個教程,在安裝 「Versant JPA」技術預覽版和提供的Eclipse插件後,該教程應該開箱即用。只要看看這個和所提供的「Versant JPA入門」手冊,以獲得第一印象是多麼容易使用它。

我不同意從DataNucleus將一些語句: 是,Versant的是ODBMS,而不是一個RDBMS,因此,我們忽略了什麼這僅僅是特定 來映射 - 您的Java數據模型幾乎是一樣的,在數據​​模型Versant數據庫。 但除了所有與映射相關的東西外,JPA也是對象數據庫的自然API。我不同意,JPQL的設計與JPA設計RDBMS的事實之間有很大關聯。 (實際上微軟已經通過抽象LINQ到數據存儲不可知水平證明了這一點。)基於

所有的Versant JPA和RDBMS之間的巨大差異JPA實現,在一個單獨的章節中我們的「開始使用JPA」指南描述。 最大的一個可能是我們的限制,有一個類型爲「long」或「java.lang.Long」的@Id字段,它由我們的運行時自動設置。

我們也有一個JDO實現,但我會建議嘗試我們的Versant JPA技術預覽(正如術語「預覽」所暗示的,它尚未完成功能)。

Christian Romberg

1

如果您使用的是對象數據庫,爲什麼需要Hibernate? Hibernate是一個ORM工具,它代表對象關係映射。如果你沒有使用關係數據庫,那Hibernate是幹什麼用的?

Here's一個聲稱與JPA一起工作的ODB;也許你可以適應或遵循Versant的VOD。

0

你不使用任何「休眠技能」與不同的軟件;你使用你的JPA技能。這是一個標準的API,因此具有相同元數據的相同類以及相同的持久性代碼。唯一不同的是你可能會在persistence.xml中使用一些不同的持久性屬性。不用說,JPA只是圍繞RDBMS設計的,各個部分(特別是JPQL)顯然不適用於ODBMS,因此它不適合您希望用於該數據存儲區的API,並且像JDO這樣的東西可能更適合(這種VOD也支持IIRC)......但無論如何,不​​管怎樣,

+0

Versant的JPA實現包括對JPQL的支持。這是一個很好的查詢API,用於表達基於謂詞的查詢表達式,這些查詢表達式涉及邏輯運算符,基於集合的運算,聚合等,而這些構造都將由基礎對象數據庫支持。 API的主要意義在於允許那些想要嘗試大數據NoSQL技術的用戶選擇一種風險很小的選項。 Hibernate/JPA的專家可以在不使用映射過程的情況下使用Versant(無論模型有多複雜),並且如果性能和規模不規則,請插入RDB驅動程序。 – Robert