Являются ли функции СУБД COLUMN и TABLE EclipseLink независимыми? - PullRequest
0 голосов
/ 29 января 2019

Если вы прочитаете это EclipseLink's Руководство пользователя / разработчика , в нем не упоминается, являются ли функции TABLE и COLUMN независимыми от базы данных, и я совсем не уверен, следует ли мнеиспользуйте их, учитывая, что я работаю с базами данных oracle, postgres и sqlserver.

Вопрос

Являются ли эти функции независимыми от СУБД?

1 Ответ

0 голосов
/ 01 февраля 2019

Самое первое предложение этого UserGuide дает важную информацию:

Язык запросов персистентности Java (JPQL) - это язык запросов, определенный JPA.JPQL похож на SQL, , но работает с объектами, атрибутами и связями вместо таблиц и столбцов.

То есть JPQL != SQL в строгом смысле.JPQL - это язык запросов, предназначенный для запроса объекта в среде объектного реляционного преобразователя ( ORM ).В этом контексте ORM абстрагирует реальную СУБД («мир SQL»). EclipseLink полностью реализует стандарт JPQL, определенный в документах спецификации JPA (версии 1, 2.0, 2.1, 2.2).

Более того, EclipseLink

предоставляет множество расширенийстандарту JPA JPQL.Эти расширения обеспечивают доступ к дополнительным функциям базы данных, многие из которых являются частью стандарта SQL, обеспечивают доступ к собственным функциям и функциям базы данных и предоставляют доступ к определенным функциям EclipseLink.Расширения EclipseLink JPQL называются языком запросов EclipseLink (EQL).

Что это означает для операции

  • COLUMN , позволяющей запрашиватьне сопоставленные столбцы, и
  • TABLE операция, позволяющая запрашивать не сопоставленные таблицы?

EQL является расширением базового ORMреализация EclipseLink для предоставления вам расширенного способа запроса объектов и мета-информации о соответствующих им столбцах базы данных.Это реализовано отдельно для каждого поставщика - в зависимости от настроенного диалекта JPA - ИЛИ как можно более независимым от поставщика.

По сути, эти функции должны быть безопасными, если речь идет о различных системах DBM.Тем не менее, вы раз и навсегда привяжете свое приложение к EclipseLink, лишив себя возможности переключаться на других поставщиков JPA, например, Hibernate , если вы хотите поэкспериментировать или по соображениям производительности.

Надеюсь, это поможет.

...