2011-10-02 108 views
1

今天我回顧了postgreSQL wiki,我發現它是一個ORDBMS(對象關係數據庫管理系統),所以我想知道使用postgreSQL(RDBMS)有什麼好處嗎?在JPA後面(hibernate,eclipselink,....)而不是RDBMS(Mysql,...)是否存在性能問題?使用ORDBMS代替RDBMS有什麼好處,而不是JPA

正如你所知道JPA使用ORM和使用JQL(Java的查詢語言)

問候

+0

參見:[對象關係的阻抗失配(http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch) –

回答

2

對象關係數據被定義爲結構化數據,它是數據庫中的用戶定義類型。

OR的數據類型包括:

  • 的Structs - 結構化類型
  • 陣列 - 數組類型

這些類型中的每個數據庫不同的定義,在Oracle它們是對象類型,VARRAY類型,NESTED TABLE和REF類型。

JDBC使用Struct,Array和Ref接口標準化訪問OR數據類型。

使用OR數據類型,您可以擁有更復雜的數據庫模式,例如具有Varray of Phone_Types和Ref to it管理器的Employee_Type TABLE。

JPA沒有任何對映射OR數據類型的直接支持,但有些提供者會這樣做。

EclipseLink支持映射OR數據類型,包括Structs,Ref和Arrays。自定義映射和註釋用於映射這些映射,但運行時JPA API相同。

我通常不會推薦使用OR數據類型,因爲它們比傳統的關係表更不標準,也沒有太多好處。某些數據庫定義的OR數據類型(如空間數據類型)提供了優勢,因爲它們具有集成的數據庫支持。

見, http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Structured_Object-Relational_Data_Types

2

我會說不。 JPA針對RDBMS,不使用ORDBMS提供的附加功能。

現在,PostgreSQL也是一個非常好的RDBMS(你不必被迫使用它的面向對象的特性,而我的猜測是它的大部分用戶不會),並且你可以在沒有JPA的情況下使用它問題。

2

JPA是「思考對象」(Java)和「關係思維」(SQL)之間的翻譯者。因此,JPA實現將始終以關係的方式與DB進行交流。這裏忽略「對象關係」的東西。

忽略JPA並直接與「ORDBMS」中的數據庫對話在最常見的情況下不會爲您帶來性能優勢,因爲ORDBMS仍然具有一些粘合邏輯的RDBMS,看起來有一點對象時尚。數據存儲在關係中,所有訪問路徑與純關係訪問路徑相同。

如果你真的想通過切換不僅數據庫產品但數據庫技術(或哲學),看看性能優勢,你應該看看真正Object Database s甚至NoSQL

+0

所以,你說這是更好地使用JPA過作爲ORDBMS(postgre)而不是直接連接到ORDBMS? – Nav

+0

恰恰相反:_IF_你想要真正的__O__ RDBMS好處,你不能使用JPA。但JPA與直接JDBC的易用性使得這些綽綽有餘。在大多數情況下,_O_RDBMS對純RDBMS好處的額外優勢非常小,以至於切換不成問題。 –

相關問題