J'utilise Hibernate 3.5.1 et EntityManager pour la persistance des données (avec JPA 2.0 et EHCache 1.5). Je peux obtenir la requête par le code suivant:HIbernate Entity Manager: Comment mettre en cache des requêtes?
EntityManager em;
...
Query query = em.createQuery(...);
...
Maintenant, le problème est que la méthode CreateQuery de EntityManager() retourne javax.persistence.Query qui, contrairement org.hibernate.Query (retourné par CreateQuery du SessionFactory() méthode), n'a pas la méthode org.hibernate.Query.setCacheable().
Comment puis-je donc mettre en cache les requêtes avec EntityManager (ou une autre partie d'Hibernate)?
Merci pour les conseils. J'utiliserai les "chaînes magiques spécifiques au vendeur" avec une chaîne importée d'une classe de support constante (comme HibernateHintConstants), ce qui garantira qu'une erreur de compilation est générée si je supprime Hibernate (à condition que je rappelle d'enlever la classe avec les constantes aux astuces spécifiques à Hibernate). – eold
@leden - Les chaînes sont déjà dans org.hibernate.ejb.QueryHints, pour éviter de réinventer la roue. – OrangeDog
Vous pouvez également ajouter des astuces dans les annotations @NamedQuery – OrangeDog