Ich habe eine Verbindungsklasse mithilfe von BasicDataSource in meiner Java-Anwendung implementiert. Gilt dies als echtes Verbindungspooling?
Ja, Sie verwenden einen Verbindungspool mit BasicDataSource, einer Komponente von Apache Commons DBCP. Allerdings erstellen Sie mit Ihrer aktuellen Implementierung versehentlich mehrere Verbindungspools, da mit jedem Aufruf von getConnection() ein neuer Pool erstellt wird.
Um ein ordnungsgemäßes Verbindungspooling einzurichten, sollten Sie den Verbindungspool normalerweise nur einmal erstellen während des Anwendungsstarts. Dieser Pool sollte dann zum Erfassen und Freigeben von Verbindungen während der gesamten Ausführung der Anwendung verwendet werden.
Hier ist eine überarbeitete Version Ihres Codes, die Verbindungspooling effektiv nutzt:
public final class Database { private static final BasicDataSource dataSource = new BasicDataSource(); static { dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/data"); dataSource.setUsername("USERNAME"); dataSource.setPassword("PASSWORD"); } private Database() { // } public static Connection getConnection() throws SQLException { return dataSource.getConnection(); } }
In Ihrem Anwendungscode sollten Sie einen Try-with-Resources-Block verwenden, um sicherzustellen, dass Ressourcen wie Verbindungen, Anweisungen und Ergebnismengen werden ordnungsgemäß geschlossen, auch im Falle von Ausnahmen:
try ( Connection connection = Database.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_EXIST); ) { // ... }
Durch die Implementierung dieser Revisionen etablieren Sie echtes Verbindungspooling in Ihrer Java-Anwendung , wodurch die Leistung optimiert wird, indem der Aufwand für die Erstellung mehrerer Verbindungen vermieden wird.
Das obige ist der detaillierte Inhalt vonVerwendet meine BasicDataSource-Implementierung tatsächlich JDBC-Verbindungspooling?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!