Sql 日食';列和表函数是否与DBMS无关?

Sql 日食';列和表函数是否与DBMS无关?,sql,jpa,eclipselink,jpql,Sql,Jpa,Eclipselink,Jpql,如果您阅读了EclipseLink的文章,它没有提到表和列函数是否独立于数据库,考虑到我正在使用一些oracle、postgres和sqlserver数据库,我根本不确定是否应该使用它们 问题: 这些功能与DBMS无关吗?的第一句话提供了一条重要的信息: Java持久性查询语言(JPQL)是JPA定义的查询语言。JPQL类似于SQL,但操作对象、属性和关系,而不是表和列 也就是说,JPQL!=严格意义上的SQL。JPQL是一种查询语言,用于在对象关系映射器()的环境中查询对象。在此上下文中,OR

如果您阅读了EclipseLink的文章,它没有提到表和列函数是否独立于数据库,考虑到我正在使用一些oracle、postgres和sqlserver数据库,我根本不确定是否应该使用它们

问题:
这些功能与DBMS无关吗?

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

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

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

此外,日食

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

这对我来说意味着什么

  • 允许查询未映射列的列操作,以及
  • 允许查询未映射表的表操作
EQL是EclipseLink的基本ORM实现的扩展,为您提供了查询对象及其相应数据库列的元信息的增强方式。这是针对每个供应商实现的-取决于配置的JPA方言-或尽可能与供应商无关

本质上,就不同的DBM系统而言,使用这些函数应该是安全的。尽管如此,您还是会将应用程序一次性绑定到EclipseLink,从而剥夺了您切换到不同JPA提供商的可能性,例如,如果您想进行实验或出于性能原因


希望有帮助。

对于一个简单的问题,这是一个很棒的论点,谢谢。我的想法也一样,但我觉得不确定,因为eclipselink有很多依赖数据库的函数(例如sql和函数函数)。很高兴它有帮助。你可以考虑对我的回答投赞成票。