2011-10-02 55 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好处的额外优势非常小,以至于切换不成问题。 –

相关问题