Ho un programma Java in cui sto facendo qualche JDBC per le query selezionate. Sarà consigliabile chiamare testDataBase() ogni volta che inturns chiama DBConnection() ogni volta o dovrei riutilizzare una connessione per tutte le query. Grazie in anticipo.JAVA JDBC che riutilizza le connessioni
risposta
L'apertura di una connessione DB è un'operazione costosa in termini di perfofmance. È necessario utilizzare ConnectionPool per condividere le connessioni tra richieste diverse.
Le connessioni al database sono di lunga durata e devono essere riutilizzate, a meno che non si disponga di un tasso di query molto basso.
Ottenere una connessione al database è un'operazione piuttosto costosa, quindi è consigliabile riutilizzare una connessione se possibile. Prendi in considerazione anche l'uso del pool di connessioni, che manterrà un numero di connessioni per te, così puoi prenderne uno dal pool quando necessario. Il metodo mostrato sopra potrebbe non dover essere modificato, dipende dal metodo DBConnection() che si chiama.
Sono completamente d'accordo con @Amir Kost, in termini di prestazioni, l'apertura di una connessione DB in una delle operazioni più lente che è possibile fare e se si dispone di restrizioni restrittive in tempo reale potrebbe essere un grosso problema. Non so se stai usando un framework o no, ma una buona pratica è pubblicare un bean che racchiude un pool di connessioni e ogni volta che devi interagire direttamente con il db, ottieni la connessione aperta corrente (che di solito corrisponde a una cosiddetta "sessione"). Ti suggerisco, (anche se non stai usando alcun framework) di riprodurre questo tecnicismo.
Le connessioni non sono thread-safe, quindi condividerle tra richieste non è una buona idea.
Un'idea migliore è di raggruppare le connessioni e mantenere il loro ambito il più stretto possibile: controllare la connessione fuori dal pool, utilizzarla, chiuderla nell'ambito della transazione.
Se si desidera solo un'istanza di connessione, è possibile utilizzare il pattern Singleton, si può considerare:
public class Connector {
private static final String URL = "jdbc:mysql://localhost/";
private static final String LOGIN = "root";
private static final String PASSWORD = "azerty";
private static final String DBNAME = "videotheque";
private static Connector connector;
private static Connection connection;
private Connector() {
}
public synchronized static Connector getInstance() {
if (connector == null) {
connector = new Connector();
}
return connector;
}
public static Connection getConnection() {
if (connection == null) {
Connection c = null;
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
c = DriverManager.getConnection(URL + DBNAME, LOGIN, PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
return connection;
}
}
E poi, è possibile chiamare: Connector.getInstance().getConnection()
Non cambia nulla in termini di prestazioni. Nel tuo esempio invochi sempre il metodo DriverManager.getConnection ogni volta. – ANTARA
- 1. Cosa può causare che SqlClient riutilizza le connessioni non valide?
- 2. monitor connessioni JDBC
- 3. Pool di connessioni con PostgreSQL JDBC
- 4. In che modo JVM riutilizza le sottostringhe String internate?
- 5. Chiudere le connessioni JDBC solo nel blocco finally?
- 6. Il pool di connessioni JDBC esaurisce le connessioni quando Context reload = "true" è abilitato in Tomcat
- 7. Pool di connessioni Tomcat e JDBC
- 8. Come si traccia le connessioni JDBC orfane che non sono chiuse?
- 9. Sto utilizzando il pool di connessioni JDBC?
- 10. Java JDBC ignora setFetchSize?
- 11. memcached che autentica le connessioni remote
- 12. in che modo Hikari ricicla le connessioni?
- 13. Java JDBC: Reply.fill()
- 14. Errore "Impossibile trovare JAR/zip" per le connessioni JDBC [BIRT Eclipse, Windows 7, Oracle 11g]
- 15. configurare l'app Grails per utilizzare il pool di connessioni JDBC
- 16. Java JDBC punto di salvataggio
- 17. Differenza di pool di connessioni, JDBC e JNDI
- 18. Perché abbiamo bisogno di un pool di connessioni per JDBC?
- 19. chiusura Connessioni di database in Java
- 20. Qual è il modo corretto per gestire le connessioni JDBC con Spring e DBCP?
- 21. È costoso mantenere le PreparedStatements? (Java e JDBC)
- 22. Rinnova certificato con Java Keytool - riutilizza il vecchio CSR?
- 23. Invia file immagine utilizzando le connessioni POST HTTP java
- 24. In che modo Phusion Passenger riutilizza thread e processi?
- 25. MongoDB riutilizza lo spazio eliminato?
- 26. JDBC driver per Java 7
- 27. Come utilizzare il pool di connessione JDBC Java?
- 28. jpa2 riutilizza entityManager con guice
- 29. Il git riutilizza i BLOB?
- 30. Riutilizza uno std :: string spostato?
È dovrebbe utilizzare una connessione per le query che sono correlate a uno scenario. Esempio, creazione di un nuovo utente. Quindi aprire la connessione, (1) controllare se il nuovo ID utente è già esistente, quindi (2) inserire nella tabella_utente. Entrambe le query dovrebbero essere fatte usando una singola connessione. – asifsid88
si può riutilizzare la stessa connessione –
usare singleton .. –