Как проверить запросы HQL?
Я ищу быстрый (очень быстрый) способ проверить изменения в спящих запросах. У меня огромное приложение с тысячами различных запросов HQL (в файлах XML) и 100+ сопоставленных классов, и я не хочу передислоцировать все приложение, чтобы просто проверить одно крошечное изменение запроса.
Как бы хорошая настройка выглядела так, чтобы освободить меня от перераспределения и обеспечить быструю проверку запроса?
Ответы
Ответ 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.
Ответ 2
Вы можете использовать hibernate tools в eclipse для запуска запросов. Это позволит вам запускать HQL, когда вы хотите что-то попробовать.
Если вы используете IntelliJ, есть Hibero.
Существует автономный редактор от солнца, но я не пробовал его.
Ответ 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