Mantenere una Connection
aprire per sempre è una pessima idea. Non ha una durata infinita, la tua applicazione potrebbe bloccarsi ogni volta che il DB interrompe la connessione e la chiude. La migliore pratica è acquisire e chiudi Connection
, Statement
e ResultSet
nel più breve possibile scopo per evitare perdite di risorse e potenziali arresti anomali dell'applicazione causati dalle perdite e dai timeout.
Poiché la connessione del DB è un'attività costosa, dovresti considerare l'utilizzo di un pool di connessioni per migliorare le prestazioni di connessione. Un server delle applicazioni/servletcontainer decente di solito fornisce già una funzione di pool di connessioni simile a un DataSource
JNDI . Consulta la sua documentazione per i dettagli su come crearlo. Nel caso ad esempio di Tomcat lo trovi qui.
Anche quando utilizzi un pool di connessioni, devi comunque scrivere il codice JDBC corretto:acquisisci e chiudere tutte le risorse nel più breve tempo possibile. Il pool di connessioni a sua volta si preoccuperà di chiudere effettivamente la connessione o semplicemente di rilasciarla nuovamente nel pool per un ulteriore riutilizzo.
Potresti ottenere ulteriori informazioni da questo articolo su come eseguire le basi di JDBC nel modo corretto. Come alternativa completamente diversa, impara EJB e JPA. Astrarrà tutto il boilerplate JDBC per te in oneliners.
Spero che questo aiuti.
Vedi anche:
- È sicuro utilizzare un'istanza java.sql.Connection statica in un sistema multithread?
- Sto utilizzando il pool di connessioni JDBC?
- Come devo connettermi al database/origine dati JDBC in un'applicazione basata su servlet?
- Quando è necessario o conveniente utilizzare Spring o EJB3 o tutti insieme?