sql >> Database >  >> RDS >> Mysql

Gebruik ik Java PooledConnections correct?

Dit is niet de juiste manier. De gegevensbron moet worden beheerd door de container waarin u de toepassing uitvoert. De MysqlConnectionPoolDataSource is niet een verbindingspool. Het is slechts een concrete implementatie van de javax.sql.DataSource koppel. Normaal gesproken definieert u het in de JNDI-context en haalt u het daar vandaan. Ook MySQL zelf vermeldt het allemaal expliciet in hun documentatie .

Hoe u het moet gebruiken, hangt af van het doel van de toepassing. Als het een webtoepassing is, moet u de JNDI-resourcesdocumentatie van de betreffende servletcontainer/appserver raadplegen. Als het bijvoorbeeld Tomcat is, dan kun je het hier vinden . Als u een clienttoepassing uitvoert - waarvoor ik de waarde van een verbindingspool ten zeerste zou betwijfelen -, dan moet u op zoek naar een verbindingspooling-framework dat gebruik kan maken van de door MySQL geleverde verbindingspoolgegevensbron, zoals C3P0 .

Het andere probleem met de code die je hebt gepost, is dat de PooledConnection#getConnection() zal de onderliggende . teruggeven verbinding die dus niet . is een gepoolde verbinding. Dichtbij roepen zal de verbinding met het zwembad niet herstellen, maar het gewoon echt sluiten. Het zwembad moet elke keer een nieuwe verbinding maken.

Dan het draadveiligheidsverhaal, dat afhangt van de echte verbindingspoolingraamwerk in kwestie. C3P0 heeft zijn robuustheid in jaren bewezen, daar maak je je geen zorgen over zolang je JDBC-code schrijft volgens het standaard idioom, d.w.z. gebruik alleen de JDBC-interfaces en verwerf en sluit alle bronnen (Connection , Statement en ResultSet ) in de kortst mogelijke omvang.




  1. Hoe het resultaat opnieuw te gebruiken voor de SELECT-, WHERE- en ORDER BY-clausules?

  2. Hoe roep ik een Oracle-opgeslagen procedure aan vanuit een Excel VBA-script?

  3. Uitzondering door gebruiker definiëren definiëren met PRAGMA EXCEPTION_INIT

  4. Fout bij het laden van oci8.so met Ubuntu-server 17.04 php 7 en apache2