使用ORDBMS而不是使用JPA背后的RDBMS有什么好处

时间:2011-10-02 08:12:56

标签: postgresql jpa orm rdbms

今天我查看了postgreSQL wiki,发现它是一个ORDBMS(对象关系数据库管理系统),所以我想知道在JPA背后使用postgreSql(RDBMS)有什么好处(hibernate,eclipselink,... 。)而不是RDBMS(Mysql,...)是否存在性能问题?

如您所知JPA使用ORM并使用JQL(Java查询语言)

此致

3 个答案:

答案 0 :(得分:2)

我会说不。 JPA针对RDBMS,不使用ORDBMS提供的附加功能。

现在,PostgreSQL也是一个非常好的RDBMS(你不会被迫使用它的面向对象的功能,我的猜测是它的大部分用户都没有),你可以将它与JPA一起使用而没有问题。

答案 1 :(得分:2)

JPA是“思考对象”(Java)和“思考关系”(SQL)之间的翻译。因此,JPA实现将始终在关系方面与DB对话。这里忽略了“对象关系”的东西。

忽略JPA并直接与“ORDBMS”中的数据库对话并不会在最常见的情况下为您带来性能优势,因为ORDBMS仍然是带有一些胶合逻辑的RDBMS,看起来有点客观时尚。数据存储在关系中,所有访问路径都与纯关系访问路径相同。

如果您真的希望通过不仅切换数据库产品而是切换数据库技术(或哲学)来看到性能优势,那么您应该看看真实的Object Database s甚至NoSQL

答案 2 :(得分:2)

对象 - 关系数据被定义为结构化数据,它是数据库中用户定义的类型。

OR数据类型包括:

  • 结构 - 结构化类型
  • 数组 - 数组类型

这些类型在每个数据库中的定义都不同,在Oracle中它们是OBJECT类型,VARRAY类型,NESTED TABLE和REF类型。

JDBC使用Struct,Array和Ref接口标准化对OR数据类型的访问。

使用OR数据类型,您可以拥有更复杂的数据库模式,例如具有Varray of Phone_Types的Employee_Type表和一个Ref to it manager。

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