2017-02-08 2 views
1

Ist es Industriestandard, eine JDBC-Verbindung zu erstellen und zu schließen, mit jeder Java-Klasse, die eine vorbereitete Anweisung verwendet, oder einen Aufruf einer gespeicherten Prozedur? Es scheint nur, dass es eine viel effizientere Möglichkeit geben würde, eine Verbindung beim Ausführen von Einfügungen, Aktualisierungen und Löschungen wiederzuverwenden, anstatt bei jeder Instanziierung einer Klasse eine Verbindung herzustellen.Was ist der Industriestandard beim Erstellen einer JDBC-Verbindung?

Ich frage nicht in Bezug auf Java-Servlets.

Vielen Dank für Feedback und Ressourcen zu überprüfen.

+3

Es ist Industriestandard einen Connection Pool zu verwenden, z.B. indem Sie die Verbindung vom Servlet-Container erhalten, der den Verbindungspool für Sie verwaltet. Wenn nicht Servlet, sollten Sie eine Drittanbieterbibliothek für den Verbindungspool verwenden, z. Weitere Informationen finden Sie unter [Erstellen eines Verbindungspools in JDBC?] (http://stackoverflow.com/q/2835090/5221149) – Andreas

+0

Wenn Sie jedoch keine Servlets verwenden, können Sie problemlos einen Verbindungspool verwenden. Abhängig davon, was Ihre Anwendung macht und wie viele Verbindungen involviert sind und wie oft, müssten Sie entscheiden, ob sich das überhaupt lohnt. (aber es ist normalerweise) – slipperyseal

Antwort

3

Normalerweise verwenden die Anwendungen Verbindungsabfragen, die von DataSource bereitgestellt werden. Sie müssen dafür keinen Anwendungsserver ausführen, nicht einmal einen Servlet-Container. Implementieren Sie die Implementierung und verwenden Sie sie aus der Anwendung. Häufig verwendete Implementierung ist Apache Dbcp:

ds = new BasicDataSource(); 
    ds.setDriverClassName("com.mysql.jdbc.Driver"); 
    ds.setUsername("root"); 
    ds.setPassword("root"); 
    ds.setUrl("jdbc:mysql://localhost/test"); 
    ... 
    // then later in the application: 
    Connection conn = ds.getConnection(); 
    // do the stuff 
    conn.close(); // only releases conn back to pool 
    ... 
    // or better in Java 7: 
    try (Connection conn = ds.getConnection()) { 
      // do the stuff 
    } 
+0

Vielen Dank für das Feedback. Erstellt eine Verbindungsmanager-Klasse und ging mit Connection.getConnection() perfekt gearbeitet; und so kann ich einfach eine Verbindung mit einer Methode herstellen. Bitte lassen Sie mich wissen, wenn ich meinen aktualisierten Code veröffentlichen muss. – dangerouslyCoding

0

Sie können einen Verbindungspool verwenden, von dem aus Ihr Code die erforderlichen Verbindungen abrufen/freigeben kann. Einige populäre sind C3P0 und DBCP. Siehe this answer, um loszulegen.

Verwandte Themen