La chiusura di java.sql.Connection
chiude anche tutte le istruzioni, le istruzioni preparate, ecc. Ottenute da quella connessione? O ci sarà perdita di memoria se chiudo la connessione ma lascia le istruzioni, ecc. Non chiuse?Impatto di java.sql.Connection.close() su oggetti java.sql.Statement e simili
risposta
Vuol la chiusura di un java.sql.Connection anche chiudere tutte le dichiarazioni, istruzioni preparate, ecc ottenuto da questo collegamento? O ci sarà perdita di memoria se chiudo la connessione ma lascia le istruzioni, non chiuse?
È necessario non dipendere da questo.
Le specifiche recita come segue:
Un'applicazione chiama il metodo Statement.close per indicare che ha terminato l'elaborazione di una dichiarazione. Tutti gli oggetti Statement verranno chiusi quando la connessione che li ha creati è chiusa. Tuttavia, è buona pratica codifica per le applicazioni per chiudere le dichiarazioni non appena hanno terminato l'elaborazione . Ciò consente a di utilizzare tutte le risorse esterne utilizzate per rilasciare immediatamente .
La procedura consigliata consiste nel chiudere TUTTI i ResultSet, le istruzioni e le Connessioni in un blocco finale, ciascuno racchiuso nel proprio try/catch, nell'ordine inverso di acquisizione.
Scrivi una classe come questa:
public class DatabaseUtils
{
public static void close(Statement s)
{
try
{
if (s != null)
{
s.close();
}
}
catch (SQLException e)
{
// log or report in someway
e.printStackTrace();
}
}
// similar for ResultSet and Connection
}
chiamata in questo modo:
Statement s;
try
{
// JDBC stuff here
}
finally
{
DatabaseUtils.close(s);
}
- 1. Casting array di oggetti su array di simili
- 2. Impatto di URL multilingue su SEO
- 3. Come raggruppare oggetti simili in un elenco?
- 4. Log.d e impatto sulle prestazioni
- 5. Algoritmo di raccomandazione (e implementazione) per la ricerca di oggetti e utenti simili
- 6. Alias di simboli deboli su OS X simili a quelli su Linux o equivalenti più simili?
- 7. Come confrontare due oggetti distinti con proprietà simili
- 8. Chiarimenti su Bytecode e oggetti
- 9. Impatto sulle prestazioni dell'ereditarietà virtuale
- 10. Sistemi simili a NakedObjects?
- 11. Come raggruppare oggetti simili in un elenco usando Haskell?
- 12. Impatto di Intrinsics e inlining sulle prestazioni di Lambda?
- 13. Modo rapido per distinguere oggetti simili da ciascuno con caratteristiche distinte su un oggetto
- 14. l'ordine dei membri di oggetti di una classe ha un impatto sulle prestazioni?
- 15. Utilità di mappatura oggetti su oggetti
- 16. pid_t (e tipi simili) - perché, solo perché?
- 17. Le password simili hanno hash simili?
- 18. Cambia tipi di controllo (ma non nomi) su Form con impatto minimo
- 19. Esecuzione di una singola funzione su elenchi, ByteStrings e testi (e forse altre rappresentazioni simili)
- 20. Impatto delle prestazioni dell'utilizzo di CDI
- 21. Segmentazione delle immagini impegnativa: lo sfondo e gli oggetti sono simili
- 22. impatto SEO usando gli hash?
- 23. Ottenere longitudine e latitudine simili dal database
- 24. ACL su Linux ha un impatto sulle prestazioni
- 25. I selettori nidificati hanno un impatto sulle prestazioni e MENO
- 26. Corrispondenza di entità simili basate su relazioni molte a molte
- 27. Disegno su canvas e oggetti pittura multipla
- 28. getattr e setattr su oggetti annidati?
- 29. Riflessione Java - impatto di setAccessible (true)
- 30. Classi simili a puntatori e l'operatore -> *
@duffymo: C'è un documento ufficiale disponibile dove posso trovare maggiori informazioni su questo? – Behrang
Forse la specifica JDBC, ma se il fornitore che implementa la tua decide di non seguire la raccomandazione avrai problemi. Che importanza hanno i documenti ufficiali in quel caso? Solo curioso: perché questa risposta non è abbastanza autoritaria per te? – duffymo
Bene, ecco cosa dice la specifica: 13.1.4 Chiusura degli oggetti di istruzione --- Un'applicazione chiama il metodo Statement.close per indicare che ha terminato l'elaborazione di un'istruzione. Tutti gli oggetti Statement verranno chiusi quando la connessione che li ha creati viene chiusa. Tuttavia, è buona pratica di codifica per le applicazioni chiudere le dichiarazioni non appena hanno finito di elaborarle. Ciò consente a qualsiasi risorsa esterna utilizzata dall'istruzione di essere rilasciata immediatamente. – Behrang