web-dev-qa-db-fra.com

Comment tester les requêtes HQL?

Je recherche un moyen rapide (vraiment rapide) de tester les modifications apportées aux requêtes d'hibernation. J'ai une énorme application avec des milliers de requêtes HQL différentes (dans des fichiers XML) et plus de 100 classes mappées et je ne veux pas redéployer l'application entière pour simplement tester une petite modification d'une requête.

À quoi ressemblerait une bonne configuration pour me libérer du redéploiement et permettre une vérification rapide des requêtes?

39
Chris

Avec Intellij IDEA 8.1.3 le mécanisme de choix est appelé "Facet". Pour tester instantanément les requêtes HQL:

  1. créer une source de données Outils -> Source de données, ajouter une source de données, définir le pilote, le nom d'utilisateur et le mot de passe de votre développement db
  2. au cas où vous ne possédez pas déjà un hibernate.cfg ou si vous configurez votre fabrique de sessions d'une manière différente de celle via xml: créez un fichier hibernate.cfg référençant tous les mappages XML (définissez un nom pour la fabrique de sessions, juste pour une manipulation plus facile)
  3. dans 'Structure du projet', ajoutez Facette au module de votre choix et affectez la source de données récemment définie à la nouvelle facette
  4. passer à Java EE View
  5. Facettes d'hibernation ouvertes - Noeud
  6. Cliquez avec le bouton droit sur Factory de session et choisissez "Ouvrir la console HQL"
  7. entrez la requête HQL dans la console ... et vous avez terminé.

désolé pour cette question RTFM.

16
Chris

Vous pouvez utiliser outils d'hibernation dans Eclipse pour exécuter des requêtes. Cela vous permettra d'exécuter HQL chaque fois que vous voudrez essayer quelque chose.

Si vous utilisez IntelliJ, il y a Hibero .

Il y a un éditeur autonome de Sun, mais je ne l'ai pas essayé.

11
stevedbrown

J'ai écrit un outil simple pour tester et prévisualiser HQL, ce n'est qu'une seule classe Java avec la méthode principale.

vous pouvez trouver le code ici: https://github.com/maheskrishnan/HQLRunner

voici la capture d'écran ...

enter image description here

6
Mahes

Je teste mes requêtes HQL dans des tests unitaires avec la base de données HSQLDB. Il vous suffit de créer un gestionnaire d'entités, de le caster en session d'hibernation et de lancer une requête.

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

    final EntityManager entityManager = entityManagerFactory.createEntityManager();

    return (Session)entityManager.getDelegate();

Meilleur Anders

3
anders.norgaard

Vous avez dit le moyen le plus rapide, je ne sais pas si vous vouliez dire le moyen le plus rapide pour commencer, ou le moyen le plus rapide d'effectuer des tests en cours, avec un investissement initial pour obtenir les tests mis en œuvre. Cette réponse est plus la dernière.

La façon dont je l'ai fait auparavant était d'implémenter des tests d'intégration simples avec JUnit et DBUnit .

En gros, vous utiliserez DBUnit pour configurer votre base de données de test avec un ensemble de données connu et représentatif, puis JUnit simple pour exercer les méthodes contenant vos requêtes HQL et vérifier les résultats.

Par exemple,

Configurez d'abord votre base de données pour ne contenir qu'un ensemble fixe de données, par exemple,

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

C'est quelque chose que vous feriez dans la méthode setup () de votre scénario de test JUnit.

Supposons maintenant que vous disposez d'un DAO pour cette entité et qu'il existe une méthode "findProductWithPriceGreaterThan (int)". Dans votre test, vous feriez quelque chose comme:

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
Jack Leow

Dans le marché Eclipse, vous pouvez rechercher des outils JBoss et choisir uniquement des outils de mise en veille prolongée dans la liste donnée.

2
Marouane Gazanayi

Dans Eclipse

  1. Installer les outils Hibernate (Jboss)
  2. Passer en veille prolongée
  3. Ouvrir/cliquer sur la fenêtre de configuration de mise en veille prolongée
  4. Rt Cliquez sur la fenêtre et ajoutez la configuration
  5. Rt Cliquez sur la fenêtre cliquez sur/ouvrez l'éditeur HQL
  6. Tapez et exécutez vos requêtes HQL et obtenez votre résultat dans la fenêtre de résultat Hibernate Query

Suivez ce lien pour plus d'informations http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html

1
James