2009-06-25 3 views
31

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

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

ответ

14

С IntelliJ IDEA 8.1.3 mechnism выбора называется «Аспект». Чтобы проверить HQL запросов:

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

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

+2

Дополнительная информация о поддержке HQL в IntelliJ находится здесь: http://www.jetbrains.com/idea/features/java_hibernate.html –

+3

Если вы используете netbeans, просто щелкните правой кнопкой мыши по hibernate.cfg.xml, возможно, сидя в вашем пакете по умолчанию и выберите «Do HQL query» –

+0

Подробная справка по последней версии: http://www.jetbrains.com/idea/webhelp/hibernate.html – Vadzim

10

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

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

Существует standalone editor от солнца, но я не пробовал.

+0

существует ли решение (= плагин, любой другой) для IntelliJ IDEA 8? – Chris

+0

Я добавил ссылку на Хиберо. – stevedbrown

+0

да, thxn. если он работает, как они его описывают, это именно то, что мне нужно, но: «С 1 января 2008 года. Hibero ™ были прекращены по соображениям бизнеса». Итак, что теперь? – Chris

3

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

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    return (Session)entityManager.getDelegate(); 

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

+0

То, что мне было нужно, thx – Snicolas

3

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

То, как я это делал раньше, состоял в том, чтобы реализовать некоторые простые интеграционные испытания с 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. 
} 
+0

с быстрым/быстрым я имел в виду «change-test-change-test» ... итерацию. – Chris

+0

@Chris, когда у вас есть базовый класс для тестирования DBunit, вы можете написать тестовые методы менее чем за минуту, и они работают в течение нескольких секунд. Не так быстро, как выделенный редактор запросов с большой кнопкой «запуска», но хорошая вещь о тестах DBUnit заключается в том, что вы можете их сохранить и использовать в качестве регрессионных тестов. Я лично использую инструменты Hibernate для Eclipse для первоначального try'n'error и DBUnit, когда он работает. –

2

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

6

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

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

вот снимок экрана ...

enter image description here

1

В затмении

  1. Установите инструменты Hibernate (JBoss)
  2. переключателя для спящего режима
  3. Open/нажмите окно конфигурации 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

Смежные вопросы