2010-11-12 7 views
5

J'enseigne mon auto-hibernation, et je suis assez confus de savoir pourquoi je ne peux pas écrire des requêtes SQL simples.HQL vs SQL/Hibernate Netbeans éditeur HQL

Je trouve un peu plus déroutant à utiliser que SQL ordinaire (ce que je suis habitué)

PLUS: L'éditeur NetBeans HQL J'ai trouvé assez ennuyeux, Il me est plus difficile pour produire une requête droite HQL, puis en SQL, et pourquoi le SQL affiché diffère-t-il des instructions SQL réelles?

Alors pourquoi l'utiliser? - Comme on sait que hibernate est très riche en ressources, et je crois que hibernate est la raison pour laquelle notre application manque de mémoire très souvent, comme pendant le processus de redéploiement par exemple ..

Je suis très intéressé à savoir Pourquoi devrais-je utiliser Hibernate et pas des instructions SQL (mysql)!

Et peut-être un bon lien pour les requêtes de mise en veille prolongée serait bien;), je me sers de celui-atm:

Mais aussi intéressé par un bon lien expliquant la configuration du requêtes, la cartographie, la construction sous-jacentes etc ..

Cordialement Alex

Répondre

3

HQL est orienté objet et fait dans le but de travailler sur les objets Java représentant vos tables DB. Un avantage fondamental est que vous pouvez mettre des espaces réservés comme :orderNumber (en utilisant le colon simbol) dans la requête HQL et remplacer par la valeur d'une variable. Par exemple:

int orderNumber = 685412; 
List<Order> l= 
    session.createQuery("from Order where orderNumber = :orderNumber") 
    .setParameter("orderNumber",orderNumber).list(); 

De cette façon, vous pouvez modifier orderNumber de manière simple, evoiding le classique

String query = "select * from Order where orderNumber = " + orderNumber + "..."; 

Morover en utilisant la syntaxe MySQL serait parfois transformer votre code non réutilisable si vous migrez votre base de données à un autre SGBD De toute façon, je ne suis toujours pas si convaincu de la préférence sur HQL.

Here vous pouvez trouver la définition complète de la grammaire.

+0

merci pour cela. - Juste une autre question, donc chaque fichier .hbm.xml a un fichier java, qui a juste besoin d'avoir le même nom!? - et si je veux écrire une requête, qui implique jusqu'à trois tables, dois-je écrire ce lien dans chaque requête ou puis-je écrire une fonction java ou similaire pour le faire pour chaque requête, comme un fichier helper.java !? –

+0

peut-être quelqu'un est en mesure de m'en dire plus sur la configuration des fichiers, car j'essaie de comprendre une application web existante (cyclos) qui est très complète. Maintenant, ils comprennent tellement de fichiers Java pour gérer l'accès DB, que j'ai du mal à suivre le flux. Que voulez-vous utiliser les fichiers exampleDao.java, par exemple. ?? –

+0

- "chaque fichier .hbm.xml a un fichier java correspondant, qui doit juste avoir le même nom" -> Oui; peut-être que ce n'est pas nécessaire le même nom (je ne suis pas sûr), mais c'est fortement recommandé. Dans hibernate.cfg.xml vous devez mettre les entrées de mappage, comme ceci bluish