2010-07-08 21 views
6

Ho le domande seguenti sulle istruzioni preparate in Java.Istruzioni preparate e driver JDBC

  1. È utile utilizzare le istruzioni preparate quando SQL Query non ha alcuna clausola Where? Supponi una query semplice Seleziona * da tablename;

  2. Si dice che l'istruzione preparata viene compilata una volta e solo i valori sono sostituiti la seconda volta. Quindi è più veloce in quanto è possibile saltare la fase di convalida e compilazione di Query. Dove è archiviato il modulo compilato? Qual è il tempo di vita di questa forma compilata?

+1

buon dettaglio su Pre-compilazione: [http://stackoverflow.com/questions/5497297/what-does-pre-compiling-a-jdbc-preparedstatement-do][1] [1 ]: http://stackoverflow.com/questions/5497297/what-does-pre-compiling-a-jdbc-preparedstatement-do – Awan

risposta

2
  1. Un PreparedStatement è utile quando ci sono parametri da passare e quando la query deve essere eseguita ripetutamente. Se c'è una semplice query da licenziare una volta, una dichiarazione si dimostrerà più veloce.

  2. La memorizzazione nella cache avviene sul server DB. Il server DB ha API che aiutano a memorizzare le query compilate nella cache. Quindi, per l'esecuzione ripetuta di query, la stessa query compilata verrà eseguita nuovamente e migliorerà le prestazioni.

+0

Anche un semplice "select * from tablename" deve essere compilato e viene calcolato un piano di esecuzione. Il guadagno potrebbe non essere tremendo. Il modulo compilato non deve mai essere ricalcolato, ma il piano di esecuzione può, a seconda delle modifiche sulle tabelle o indici impliciti. –

+0

L'elemento n. 2 non è completamente vero. Il server delle applicazioni può fornire la propria cache PreparedStatement, Weblogic è uno di questi. – RealHowTo

2
  1. Usa PreparedStatement ogni volta c'è un input o più da parte dell'utente. Ti aiuterà a sfuggire ai caratteri necessari per prevenire SQL Injection e gli errori nelle query.
Problemi correlati