Как тестировать HQL-запросы? - PullRequest
38 голосов
/ 25 июня 2009

Я ищу быстрый (действительно быстрый) способ проверить изменения в запросах гибернации. У меня огромное приложение с тысячами различных запросов HQL (в файлах XML) и более 100 сопоставленных классов, и я не хочу повторно развертывать все приложение, чтобы просто протестировать одно крошечное изменение запроса.

Как бы выглядела хорошая установка, чтобы освободить меня от повторного развертывания и включить быструю проверку запросов?

Ответы [ 7 ]

16 голосов
/ 26 июня 2009

В Intellij IDEA 8.1.3 механизм выбора называется «Facet». Чтобы мгновенно протестировать HQL-запросы:

  1. создать источник данных Инструменты -> Источник данных, Добавить источник данных, определить драйвер, имя пользователя и пароль вашей разработки db
  2. в случае, если у вас уже нет hibernate.cfg или вы конфигурируете фабрику сеансов не так, как через xml: создайте файл hibernate.cfg, ссылающийся на все сопоставления XML (определите имя для фабрики сеансов, просто для упрощения обработки )
  3. в «Структуре проекта» добавьте фасет в выбранный вами модуль и назначьте недавно определенный источник данных новому фасету
  4. переключиться на Java EE View
  5. Открытые спящие аспекты Hibernate - Узел
  6. Щелкните правой кнопкой мыши фабрику сессий и выберите «Открыть консоль HQL»
  7. введите HQL-запрос в консоли ... и все готово.

извините за этот вопрос RTFM.

11 голосов
/ 25 июня 2009

Вы можете использовать инструменты гибернации в eclipse для запуска запросов. Это позволит вам запускать HQL всякий раз, когда вы захотите что-то попробовать.

Если вы используете IntelliJ, есть Hibero .

Существует автономный редактор от Sun, но я не пробовал.

6 голосов
/ 08 января 2012

Я написал простой инструмент для тестирования и предварительного просмотра HQL, это всего лишь один класс Java с методом main.

Вы можете найти код здесь: https://github.com/maheskrishnan/HQLRunner

вот скриншот ...

enter image description here

3 голосов
/ 25 июня 2009

Вы сказали, что самый быстрый способ, я не уверен, что вы имели в виду самый быстрый способ начать работу или самый быстрый способ выполнить текущие тесты с некоторыми начальными инвестициями для их реализации. Этот ответ скорее последний.

То, как я делал это раньше, заключалось в том, чтобы реализовать простое интеграционное тестирование с JUnit и DBUnit .

По сути, вы будете использовать DBUnit для настройки своей тестовой базы данных с известным и репрезентативным набором данных, а затем просто JUnit для выполнения методов, содержащих ваши HQL-запросы, и проверки результатов.

Например,

Сначала настройте базу данных, чтобы она содержала только фиксированный набор данных, например,

Product Name, Price
Acme 100 Series Dynamite, $100
Acme 200 Series Dynamite, $120
Acme Rocket, $500

Это то, что вы делаете в методе setup () вашего тестового примера JUnit.

Теперь давайте предположим, что у вас есть DAO для этой сущности, и есть метод "findProductWithPriceGreaterThan (int)". В вашем тесте вы бы сделали что-то вроде:

public void testFindProductWithPriceGreaterThanInt() {
    ProductDAO dao = new HibernateProductDAO();
    //... initialize Hibernate, or perhaps do this in setup()

    List products = dao.findProductWithPriceGreaterThan(110);
    assertEquals(2, products.size());
    //... additional assertions to verify the content of the list.
}
3 голосов
/ 25 июня 2009

Я тестирую свои HQL-запросы в модульных тестах с базой данных HSQLDB. Просто создайте менеджер сущностей, приведите его в спящий режим и отправьте запрос.

    final EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("tacs-test", props);

    final EntityManager entityManager = entityManagerFactory.createEntityManager();

    return (Session)entityManager.getDelegate();

Лучший Андерс

2 голосов
/ 11 октября 2011

В eclipse Market вы можете искать Инструменты JBoss и выбирать только инструменты Hibernate из данного списка.

1 голос
/ 13 августа 2016

В затмении

  1. Установка инструментов Hibernate (Jboss)
  2. Переключение в спящий режим в зависимости от
  3. Открыть / щелкнуть окно Конфигурация Hibernate
  4. Rt Нажмите на окно и добавьте конфигурацию
  5. Rt Нажмите на окно, нажмите / откройте редактор HQL
  6. Введите и выполните свои HQL-запросы и получите результат в окне результатов Hibernate Query

Для получения дополнительной информации перейдите по этой ссылке http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html

...