Domanda

Mi piacerebbe usare JPA su JDBC per una nuova applicazione. Sto rigorosamente utilizzando query denominate e metodi CRUD di base di JPA Entity direttore, che mi permette (con l'aiuto di Hibernate, o di qualsiasi altra implementazione JPA) per estrarre tutte le query SQL native che verranno eseguiti sul database. Con questo elenco di interrogazioni statiche, capisco che posso costruire un pacchetto DB2 che è tutti i piani di esecuzione delle mie richieste.

Quindi la mia domanda è: Fa eseguire le query attraverso JDBC contro DB2 potranno usufruire di quei piani di esecuzione, o no? Capisco che il prodotto pureQuery in grado di catturare l'elenco degli ordini di sql. Ha, comunque tramite JDBC e non attraverso pureQuery API specifiche, fornire più? tale DB2 specifica funzione legano statica? o è equivalente a JDBC?

Grazie per qualsiasi pezzo di risposta.

È stato utile?

Soluzione

applicazioni JDBC eseguire SQL dinamico solo (cioè DB2 non utilizza pacchetti statici).

Ci sono solo 2 modi per ottenere SQL statica (in cui le query sono memorizzati in un pacchetto nel database): Scrivi la tua applicazione utilizzando SQLJ (che elimina JPA / Hibernate) o utilizzare pureQuery (che si trova tra JDBC e il database) .

Tenete a mente che anche con SQL dinamico, DB2 fa cache i piani di esecuzione per le query, quindi se vengono eseguiti con frequenza sufficiente (cioè, rimangono nella cache), allora non vedrà la testa dalla compilazione di query. La cache è utile solo se le query sono una corrispondenza esatta byte per byte, quindi select * from t1 where c1 = 1 non è la stessa select * from t1 where c1 = 2, né select * from t1 where C1 = 1 (che fornisce lo stesso risultato, ma la query differisce). Utilizzando indicatori di parametro (select * from t1 where c1 = ?) è la chiave. Il vostro DBA può regolare la dimensione della cache del catalogo per aiutare a massimizzare la percentuale di successi in questa cache.

Anche se la memorizzazione nella cache consente di evitare ripetutamente la compilazione di una query, non offre la stabilità piano che SQL statica fa, in modo YMMV.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top