EclipseLink的COLUMN和TABLE函数是否独立于DBMS?

时间:2019-01-29 20:34:45

标签: sql jpa eclipselink jpql

如果您阅读此 EclipseLink的 User-/Developer Guide,则不会提及TABLE和COLUMN函数是否独立于数据库,并且我不确定我是否应该考虑使用它们正在使用一些oracle,postgres和sqlserver数据库。

问题

这些功能与DBMS是否独立?

1 个答案:

答案 0 :(得分:2)

UserGuide的第一句话提供了重要的信息:

  

Java持久性查询语言(JPQL)是JPA定义的查询语言。 JPQL与SQL类似,对对象,属性和关系(而不是表和列)进行操作。

严格来说,就是JPQL != SQL。 JPQL是一种查询语言,目的是在对象关系映射器(ORM)的环境中查询对象。在这种情况下,ORM抽象实际的DBMS(“ SQL世界”)。 EclipseLink完全实现了JPA规范文档(版本1、2.0、2.1、2.2)中定义的标准JPQL。

此外,EclipseLink

  

为标准JPA JPQL提供了许多扩展。这些扩展提供对其他数据库功能的访问,其中许多功能是SQL标准的一部分,提供对本机数据库功能的访问,并提供对EclipseLink特定功能的访问。 EclipseLink JPQL扩展被称为EclipseLink查询语言(EQL)。

这对

意味着什么
  • COLUMN 操作以允许在非映射列上进行查询,并且
  • TABLE 操作是否允许在非映射表上进行查询?

EQL 是EclipseLink的基本ORM实现的扩展,为您提供了一种查询对象及其对应数据库列的元信息的增强方式。这是针对每个供应商特定实现的-取决于配置的 JPA方言-或尽可能与供应商无关。

本质上,就不同的DBM系统而言,使用这些功能应该是安全的。尽管如此,您仍将一劳永逸地将应用程序绑定到EclipseLink,从而避免了切换到其他JPA提供程序的可能性。 Hibernate,以备不时之需或出于性能考虑。

希望有帮助。