Il valore è in genere controllato da DB. Non hai il controllo su di esso utilizzando il codice. Dipende dal server DB utilizzato. Di solito dura circa 30 minuti fino a un'ora.
D'altra parte, mantenere aperto il numero Connection
per sempre è una pessima idea. Migliore pratica è acquisire e chiudere Connection
, Statement
e ResultSet
nel più breve portata possibile per evitare perdite di risorse e potenziali crash dell'applicazione causati dalle perdite e timeout.
Vero, il collegamento del DB è un compito costoso. Se la tua applicazione dovrebbe funzionare relativamente a lungo e collegare il DB abbastanza spesso, allora considera di utilizzare un pool di connessioni per migliorare le prestazioni di connessione. Se la tua applicazione è un'applicazione web, dai uno sguardo alla documentazione di appserver, di solito fornisce una funzione di pool di connessioni nel sapore di un DataSource
. Se si tratta di un'applicazione client, cercare le librerie di pool di connessioni di terze parti che hanno dimostrato la loro robustezza con anni, come ad esempio Apache Commons DBCP (comunemente utilizzato, in appserver di lotti), C3P0 (noto da Hibernate) e Proxool (se si desidera connessioni XA).
Ricordare che, quando si utilizza un pool di connessioni, è ancora necessario scrivere il codice JDBC corretto, ad es. acquisire e chiudere tutte le risorse nel più breve ambito possibile. A sua volta, il pool di connessioni si preoccuperà di chiudere effettivamente la connessione o di rilasciarla nuovamente al pool per un ulteriore riutilizzo.
È possibile ottenere ulteriori informazioni da this article come eseguire correttamente le basi JDBC.
Spero che questo aiuti e felice codifica.
DBCP è un orribile, * orribile * pool di connessioni, mai usato – erickson
Interessante. Non ho mai avuto seri problemi con esso se usato nel gusto di un'origine dati gestita da Tomcat 6.0.Ti cura di elaborare? – BalusC
Bene, tu desidera utilizzare un pool quando le risorse sono "costose" (richiede un po 'di tempo per la creazione) DBCP (o il pool sottostante) mantiene un blocco sull'intero pool mentre vengono prodotti nuovi oggetti. Ciò impedisce che i thread abbiano finito con una risorsa e stanno semplicemente tentando di restituirlo al blocco. Nel frattempo, altri thread sono bloccati nel tentativo di ottenere quelle risorse .Perché queste acquisizioni di blocco non utilizzano il pacchetto simultaneo, non sono interrompibili.Questo fa male le prestazioni in condizioni normali. veramente stupido con il DB, diventa * veramente * brutto, veramente veloce – erickson