Как протестировать запросы HQL?

Добавьте флаг -l вверху вашего bash-скрипта, т.е.

#!/usr/bin/env bash -l

...

export NAME1="VALUE1"
export NAME2="VALUE2"

Значения с NAME1 и NAME2 теперь будут экспортированы в текущую среду, однако эти изменения не являются постоянными. Если вы хотите, чтобы они были постоянными, вам нужно добавить их в ваш файл .bashrc или другой файл инициализации.

Из справочных страниц:

-l Make bash act as if it had been invoked as a login shell (see INVOCATION below).
40
задан Chris 25 June 2009 в 12:05
поделиться

4 ответа

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

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

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

16
ответ дан 27 November 2019 в 01:53
поделиться

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

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

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

11
ответ дан 27 November 2019 в 01:53
поделиться

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

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager();

    return (Session)entityManager.getDelegate();

Лучшее. Андерс

3
ответ дан 27 November 2019 в 01:53
поделиться

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

То, как я делал это раньше, заключалось в реализации простого интеграционного тестирования с 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
ответ дан 27 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: