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?
Avec Intellij IDEA 8.1.3 le mécanisme de choix est appelé "Facet". Pour tester instantanément les requêtes HQL:
désolé pour cette question RTFM.
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é.
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 ...
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
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.
}
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.
Dans Eclipse
Suivez ce lien pour plus d'informations http://docs.jboss.org/tools/OLD/2.0.0.GA/hibernatetools/en/html/plugins.html