Qu'est ce qu'une requête nommée?
J'ai lu sa définition, mais pas en mesure de comprendre pleinement.
- Une statique de la requête exprimée dans les métadonnées Lien qui peut aider :- download.oracle.com/javaee/5/api/javax/persistence/...
- Un exemple de base et l'utilisation de celui-ci: mkyong.com/hibernate/hibernate-named-query-examples
Vous devez vous connecter pour publier un commentaire.
Laissez-moi deviner: vous avez trébuché sur le concept de requêtes nommées et vous vous demandez où il se situe dans SQL.
Bien, à partir de ma connaissance, les requêtes nommées n'ont pas eu quelque chose à voir avec "pure" de SQL, mais elles sont un concept que l'on retrouve dans divers ORM (object relational mapping) des cadres, ala Java Persistence API.
Fondamentalement, un nom de requête est une façon de mapper un nom à une requête qui peut être appelée plusieurs fois dans votre code à différents endroits.
Donc, au lieu d'utiliser
comme une chaîne de caractères à divers endroits dans votre code, vous pouvez utiliser ceci:
et par la suite de vous référer à cette requête à l'aide de
MyEntity.getItemsPerProductCategory
.Exemple tiré de ce site.
Vous pourriez vous demander pourquoi est-ce utile?
Une implémentation JPA comme Hibernate pouvez vérifier la validité pour les requêtes nommées au démarrage, donc dans un sens, vous avez de la sécurité vérification de type. Cela permettra de réduire les erreurs lors de l'exécution.
Je crois que vous parlez de la mise en veille prolongée.
En termes simples, un nom de requête est une requête qui peut être identifié par un nom. Vous pouvez définir une requête nommée comme ci-dessous et l'utiliser par son nom.
Vous avez plus d'options et peut passer des paramètres à elle aussi.
Requête nommée est la statique de la requête exprimée dans les métadonnées.Demander les noms sont limités à l'unité de persistance.
L'exemple suivant est un exemple de la définition d'une requête nommée dans la Java Persistence query language:
L'exemple suivant est un exemple de l'utilisation d'une requête nommée:
Il y a 2 façons de définir des requêtes en JPA, Dynamiquement et Statiquement. Requêtes nommées sont le dernier (c'est à dire statique). Vous définissez la requête dans un fichier de métadonnées XML ou sur une véritable entité directement. Notez que ces requêtes ont une portée globale (c'est à dire à travers l'ensemble de l'unité de persistance), c'est à dire, peu importe où ils sont définis les noms doivent être uniques, par exemple, si vous définissez une requête nommée et l'Entité "Employé" et le nom de la requête est appelée "findAll" et vous avez un autre requête nommée appelé "findAll" défini sur une Entité appelée "Département", alors que ces requêtes en découdront.
Qui est généralement pourquoi requêtes nommées les noms sont préfixe avec le nom de l'Entité à laquelle ils s'appliquent, par exemple:
Comme une meilleure pratique générale, toutes les requêtes qui n'ont pas besoin d'être construites dynamiquement (par exemple, une requête qui a une quantité indéterminée de et clauses au moment de la compilation, puisque ceux-ci sont déterminés par l'utilisateur défini des filtres lors de l'exécution devra être construit de manière dynamique) doit être fait par le biais d'une requête native, car ils sont transformés ou convertis à SQL une fois sur l'application de démarrage plutôt que chaque fois que la requête est utilisé. De sorte qu'ils sont plus efficaces que les requêtes dynamiques.
Selon http://www.objectdb.com/java/jpa/query/named
Une requête nommée est un définis de manière statique requête avec un prédéfini immuable de la chaîne de requête. En utilisant des requêtes nommées au lieu de requêtes dynamiques peuvent améliorer l'organisation du code en séparant les chaînes de requête JPQL du code Java. Il applique également à l'utilisation de paramètres de la requête plutôt que d'intégrer les littéraux de façon dynamique dans la chaîne de requête et les résultats des requêtes plus efficaces.
Ici est un Exemple,
Vous devez importer
import javax.la persistance.NamedQueries;
import javax.la persistance.NamedQuery;
(TechNet: Définir des Requêtes Nommées dans une Vue de Source de Données (Analysis Services))