HIbernate Entity Manager:, Wie man cache-Abfragen?
Ich bin mit dem Hibernate 3.5.1 und EntityManager für die Dauerhaftigkeit der Daten (mit JPA 2.0 und EHCache 1.5). Ich kann erhalten Sie die Abfrage, indem Sie den folgenden code:
EntityManager em;
...
Query query = em.createQuery(...);
...
Nun, das problem ist, dass EntityManager ist createQuery () - Methode gibt javax.die Persistenz.Abfrage, die, im Gegensatz zu org.hibernate.Abfrage (zurückgegeben von der SessionFactory ist createQuery () - Methode), nicht das org.hibernate.Abfrage.setCacheable () - Methode.
Wie ich bin, dann soll der zum Zwischenspeichern von Abfragen mit EntityManager (oder irgendein anderer Teil des Hibernate)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die unwrap-Methode erhalten Sie auf der Hersteller-Implementierung, wenn Sie verwenden möchten, herstellerspezifische Erweiterungen. z.B.,
Dann können Sie mit der herstellerspezifischen Benutzeroberfläche. Alternativ könnten Sie einfach packen Sie Ihre
EntityManager
zu einemSession
immer vor der Erstellung der Abfrage.Wenn Sie nicht wollen, zu haben, hibernate Einfuhr in Ihrem code, Sie könnte auch tun,
Wirklich an Ihnen, welchen Weg Sie lieber einführen, die Hersteller-Abhängigkeit.
Ich wäre für die erste, da wird es scheitern, mit einer Ausnahme, wenn hibernate entfernt von Abhängigkeiten zu senden, eine große rote "Hey, Ihr Entwickler das ändern dieser, es war ein Verkäufer der Abhängigkeit hier." In der Erwägung, dass der Hinweis einfach gar nichts, wenn es nicht verstanden durch den Anbieter.
Anderen Personen würde eher tolerieren, dass Anbieter angewiesen magic strings im code mehr benötigen, um einen compile-time-Lieferanten-Abhängigkeit.
setHint
hat mir sehr geholfen. Sieht aus wie dieses ist der Weg, um entityManager verwenden den Abfrage-cache.