2017-06-07 3 views
0

Ich habe eine SQL-Datenbank und einen Computer, der einen Java-Code ausführt, um Informationen von ihm abzurufen.
Die Maschine hört die ganze Zeit auf einem Port.
Zuerst schloss ich die Verbindung nach jeder Abfrage, aber die erhöhte Latenz war hoch.
Also habe ich auf nie die Verbindung geschlossen, und jetzt ist die Verbindung nach einiger Zeit ohne Verwendung geschlossen (die Latenz war jedoch niedrig).
So ist die Lösung offensichtlich irgendwo zwischen nie schließen und immer schließen.
Was ist die empfohlene Heuristik zur Verbindung mit der SQL-Datenbank?
Jetzt bin ich beim Testen des Servers und die Menge der Anfragen ist niedrig. Wenn der Server ausgeführt wird, verwenden Benutzer den Server mehr als er jetzt verwendet wird. Ich kann nicht sagen, wie viel mehr.So verwalten Sie die Verbindung zur Datenbank SQL

+1

Google für dbcp –

+0

Warum haben Sie MySQL Tag ** und ** Microsoft SQL Server? –

Antwort

1

Verwenden Sie einen beliebigen Verbindungspool für Ihren Anwendungsfall.Wenn Sie den Anwendungsserver verwenden, können Sie den Verbindungspool des Appservers verwenden oder den Opensource-Dbcp-Verbindungspoolmechanismus verwenden.

<!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> 
<dependency> 
    <groupId>commons-dbcp</groupId> 
    <artifactId>commons-dbcp</artifactId> 
    <version>1.2.2</version> 
</dependency> 

dbcp Konfiguration link

import org.apache.commons.dbcp2.BasicDataSource; 


public class DataBaseUtility 
{ 
    private static BasicDataSource dataSource; 

    private static BasicDataSource getDataSource() 
    { 

     if (dataSource == null) 
     { 
      BasicDataSource ds = new BasicDataSource(); 
      ds.setUrl("jdbc:mysql://localhost/test"); 
      ds.setUsername("root"); 
      ds.setPassword("password"); 


      ds.setMinIdle(5); 
      ds.setMaxIdle(10); 
      ds.setMaxOpenPreparedStatements(100); 

      dataSource = ds; 
     } 
     return dataSource; 
    } 

    public static void main(String[] args) throws SQLException 
    { 

     try (BasicDataSource dataSource = DataBaseUtility.getDataSource(); 
       Connection connection = dataSource.getConnection(); 
       PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM account");) 
     { 
System.out.println("The Connection Object is of Class: "+connection.getClass()); 
      try (ResultSet resultSet = pstmt.executeQuery();) 
      { 
       while (resultSet.next()) 
       { 
        System.out.println(resultSet.getString(1) + "," + resultSet.getString(2) + "," + resultSet.getString(3)); 
       } 
      } 
      catch (Exception e) 
      { 
       connection.rollback(); 
       e.printStackTrace(); 
      } 
     } 
    } 

} 
Verwandte Themen