今天我查看了postgreSQL wiki,发现它是一个ORDBMS(对象关系数据库管理系统),所以我想知道在JPA背后使用postgreSql(RDBMS)有什么好处(hibernate,eclipselink,... 。)而不是RDBMS(Mysql,...)是否存在性能问题?
如您所知JPA使用ORM并使用JQL(Java查询语言)
此致
答案 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数据类型(如空间数据类型)确实具有优势,因为它们具有集成的数据库支持。