JPA: das Zwischenspeichern von Abfragen

Ich bin mit JPA laden und speichern von Entitäten in meine Java-EE-basierte web-Anwendung. Hibernate als Implementierung von JPA, aber ich glaube nicht, verwenden Hibernate-spezifische features und arbeiten nur noch mit reinem JPA.

Hier einige DAO-Klasse, bemerken getOrders Methode:

Klasse OrderDao { 
EntityManager em; 

Liste getOrders(Long customerId) { 
Query q = em.createQuery( 
"SELECT o FROM Order o WHERE o.customerId = :customerId"); 
q.setParameter("customerId", customerId); 
Rendite q.getResultList(); 
} 
}

Methode ist ziemlich einfach, aber es hat einen großen Nachteil. Jedes mal, wenn die Methode aufgerufen wird, werden folgende Aktionen durchgeführt irgendwo innerhalb der JPA-Implementierung:

  1. JPQL-Ausdruck geparst und kompiliert SQL.
  2. Entweder Statement oder PreparedStatement-Instanz erstellt und initialisiert.
  3. Anweisung Instanz ist gefüllt mit den Parametern und ausgeführt.

Ich glaube, dass die Schritte 1 und 2 von oben umgesetzt werden sollte, einmal pro Lebensdauer der Anwendung. Aber wie machen Sie es? In anderen Worten, ich brauche das Query-Instanzen zwischengespeichert werden.

Natürlich kann ich das implementieren eines solchen cache auf meiner Seite. Aber warten Sie, ich bin mit moderne leistungsfähige ORM ' s! Haben Sie nicht auch schon dieses, für mich?

Bemerken, dass ich nicht zu erwähnen, sowas wie Hibernate query cache die caches Ergebnis Abfragen. Hier möchte ich zur Ausführung meiner Abfragen etwas schneller.

InformationsquelleAutor der Frage Andrey | 2010-08-26

Schreibe einen Kommentar