Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

С Intellij IDEA 8.1.3. Механизм выбора называется "Facet". Чтобы немедленно протестировать запросы HQL:

  • создать источник данных Инструменты → Источник данных, Добавить источник данных, определить драйвер, имя пользователя и пароль для разработки db
  • если у вас нет hibernate.cfg или вы настроили сеанс factory иначе, чем через xml: создайте файл hibernate.cfg, ссылающийся на все сопоставление XML (определите имя для сеанса factory, просто для упрощения обработки)
  • в "Структура проекта" добавьте Facet к вашему модулю выбора и назначьте недавно определенный источник данных для новой грани.
  • переход на Java EE View
  • Открыть грани гибернации - Node
  • Щелкните правой кнопкой мыши сеанс factory и выберите "Open HQL Console"
  • введите запрос HQL в консоли ... и ваше дело сделано.

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

Ответ 3

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

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

здесь снимок экрана...

enter image description here

Ответ 4

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

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager();

    return (Session)entityManager.getDelegate();

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

Ответ 5

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

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

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

Например,

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

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

Это то, что вы сделали бы в вашем методе установки тестового примера 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.
}

Ответ 6

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

Ответ 7

В eclipse

  • Установить инструменты Hibernate (Jboss)
  • Переключение на спящий режим
  • Открыть/нажать окно конфигурации гибернации
  • Rt Нажмите на окно и добавьте конфигурацию
  • Rt Щелкните по окну, щелкните/откройте редактор HQL
  • Введите и выполните ваши запросы HQL и получите результат в окне результатов запроса Hibernate.

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