2009-06-25 23 views
31

Poszukuję szybkiego (naprawdę szybkiego) sposobu testowania zmian w zapytaniach hibernacji. Mam ogromną aplikację z tysiącami różnych zapytań HQL (w plikach XML) i ponad 100 mapowanych klas i nie chcę ponownie wdrażać całej aplikacji, aby przetestować jedną drobną zmianę w zapytaniu.Jak testować zapytania HQL?

Jak dobra konfiguracja wygląda jak uwolnić mnie od przeniesienia i umożliwić szybkie sprawdzenie zapytania?

Odpowiedz

14

Z IntelliJ IDEA 8.1.3 mechnism wyboru jest nazywany 'Facet'. Jeśli chcesz przetestować zapytań HQL:

  1. utworzyć źródło danych Narzędzia -> Źródło danych, Dodaj Źródło danych, definiowanie sterownika, nazwę użytkownika i hasło db rozwoju Yor
  2. w przypadku, gdy nie masz już hibernate.cfg lub konfigurujesz fabrykę sesji w inny sposób niż przez xml: utwórz hibernację.Plik cfg odwołujący się do wszystkich mapowań XML (zdefiniuj nazwę fabryki sesji, tylko dla łatwiejszej obsługi)
  3. w 'Struktura projektu' dodaj Facet do wybranego modułu i przypisz ostatnio zdefiniowane źródło danych do nowego przełącznika aspektu
  4. na Java EE Zobacz
  5. Otwarte Hibernate aspektach - Węzeł
  6. kliknij prawym przyciskiem myszy i wybrać fabrycznie Session "Open HQL Console"
  7. wprowadzić HQL kwerendy w konsoli ... i your're zrobić.

Przepraszam za to pytanie RTFM.

+2

Więcej informacji o obsłudze HQL w IntelliJ znajduje się tutaj: http://www.jetbrains.com/idea/features/java_hibernate.html –

+3

Jeśli używasz netbeans, po prostu kliknij prawym przyciskiem myszy hibernate.cfg.xml, prawdopodobnie siedząc w domyślnym pakiecie i wybierz "Do HQL query" –

+0

Szczegółowa pomoc w najnowszej wersji: http://www.jetbrains.com/idea/webhelp/hibernate.html – Vadzim

10

Możesz użyć hibernate tools in eclipse, aby uruchamiać zapytania. To pozwoli ci uruchomić HQL, kiedy tylko chcesz coś wypróbować.

Jeśli używasz IntelliJ istnieje Hibero.

Istnieje standalone editor od słońca, ale nie próbowałem go.

+0

nie istnieje rozwiązanie (= wtyczki, cokolwiek) dla IntelliJ IDEA 8? – Chris

+0

Dodałem link do Hibero. – stevedbrown

+0

tak, thxn. jeśli to działa, jak go opisują, to dokładnie to, czego potrzebuję, ale: "Od 1 stycznia 2008 roku ... Hibero ™ zostało przerwane z powodów biznesowych.", więc co teraz? – Chris

3

Testuję moje zapytania HQL w jednostkowych testach z bazą danych HSQLDB. Po prostu utwórz menedżera encji, przesyłaj go do sesji hibernacji i odpytuj.

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager(); 

    return (Session)entityManager.getDelegate(); 

Najlepszy Anders

+0

Dokładnie to, czego potrzebowałem, thx – Snicolas

3

Mówiłeś najszybsza droga, nie jestem pewien, czy chodziło o najszybszym sposobem, aby zacząć zabawę lub najkrótszą drogę do wykonywania bieżących badań, z pewnym inwestycji początkowej, aby uzyskać przeprowadzone testy. Ta odpowiedź jest bardziej ta druga.

Sposób Robiłem to już wcześniej było wdrożyć kilka prostych testów integracji z JUnit i DBUnit.

Zasadniczo będziesz używał DBUnit do konfigurowania testowej bazy danych za pomocą znanego i reprezentatywnego zestawu danych, a następnie zwykłego JUnit do wykonywania metod zawierających zapytania HQL i sprawdzania wyników.

Na przykład

Konfigurowanie bazy pierwszy zawiera tylko stały zestaw danych np

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

To jest coś, co można zrobić w ustawieniach swojej JUnit Przypadek Testowy jest metoda().

Teraz załóżmy masz DAO dla tego podmiotu, a tam „findProductWithPriceGreaterThan (int)” metoda. W swoim badaniu, że można zrobić coś takiego:

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

z szybkim/szybkim znaczeniem oznaczało "test zmiany-testu-zmiany" ... iteracja. – Chris

+0

@Chris, kiedy już masz klasę bazową do testowania DBunit, możesz napisać metody testowe w mniej niż minutę i działają one przez kilka sekund. Nie tak szybki jak dedykowany edytor zapytań z dużym przyciskiem "uruchom", ale dobrą rzeczą w testach DBUnit jest to, że można je zapisać i używać jako testów regresji. Osobiście używam Eclipse Hibernate Tools dla początkowego try'n'error i DBUnit, gdy już to działa. –

2

W Eclipse Market można wyszukiwać narzędzia JBoss i wybierać tylko narzędzia Hibernuj z podanej listy.

1

w Eclipse

  1. zainstalować narzędzia hibernacji (JBoss)
  2. switcha do hibernacji:
  3. Otwórz/kliknij okno Hibernate konfiguracji
  4. Rt Kliknij na oknie i Dodaj Configuration
  5. Rt kliknij okno kliknięciem/Otwórz Edytor HQL
  6. Rodzaj i wykonywanie zapytań HQL i uzyskać wynik w oknie wyników Hibernate Query

ten link, aby uzyskać więcej informacji http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html