Что мне лучше использовать JPA - чистый SQL или JPQL и как создать / удалить таблицу с использованием JPQL и Entity - PullRequest
0 голосов
/ 24 февраля 2019

Я использую entityManager в моем DAO .

К создать таблицу, я использую:

String CREATE_TABLE = "CREATE TABLE if not exists cats (name varchar(255) PRIMARY KEY NOT NULL, age int NOT NULL);

К удалить таблицуя использую:

String DELETE_TABLE = "DROP TABLE examples";

до выполнить это я использую:

entityManager.createNativeQuery(sql).executeQuery();

Как я могу сделать то же самое с использованием JPQL (у меня есть @ Entity для него при необходимости)?

Какой метод мне выбрать - createNativeQuery () + SQL ИЛИ createQuery () + JPQL ?

1 Ответ

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

Вы не можете создать таблицу, как указано в спецификации jpql .Когда дело доходит до запросов, это зависит.

Преимущества Jpql:

  1. Jpql использует преимущества картографирования (ленивая / энергичная загрузка, релятивность) - он использует то, что вы уже определили.В SQL вам нужно как-то отобразить результат.
  2. Запросы могут храниться в кэше для обеспечения лучшей производительности.
  3. Контекст персистентности не нужно сбрасывать перед запросом.
  4. Вы можете использовать IDE для изменения имени объекта вместе с запросами.Их проще поддерживать.
  5. Независимость от СУБД - вы можете изменить базу данных в любое время, это сработает (это также может быть недостатком - синтаксис ограничен стандартами SQL).

Преимущества SQL:

  1. Вы можете использовать специфичный для поставщика диалект, он преодолевает недостатки проверки jpql.
  2. Поддерживаются операции DML, такие как обрезка или создание таблицы.Также индексы и разбиение.
  3. Вы имеете больший контроль над запросами к дБ.

Подводя итог: , если вам не нужны специфичные для поставщика запросы, которые могли бы облегчить реализацию и / илиулучшить производительность, jpql должен быть выбор .Моделирование схемы не должно выполняться во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...