Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy poprawnie używam Java PooledConnections?

To nie jest właściwa droga. Źródło danych musi być zarządzane przez dowolny kontener, w którym uruchomiona jest aplikacja. MysqlConnectionPoolDataSource jest nie pula połączeń. To tylko konkretna implementacja javax.sql.DataSource berło. Zwykle definiujesz go w kontekście JNDI i stamtąd go otrzymujesz. Również sam MySQL stwierdza to wszystko wyraźnie w ich dokumentacja .

Teraz, jak z niego korzystać, zależy od celu aplikacji. Jeśli jest to aplikacja internetowa, należy zapoznać się z dokumentacją zasobów JNDI danego servletcontainer/appserver. Jeśli jest to na przykład Tomcat, możesz go znaleźć tutaj . Jeśli używasz aplikacji klienckiej — w przypadku której bardzo kwestionowałbym wartość puli połączeń — musisz poszukać struktury puli połączeń, która może korzystać z puli danych z puli połączeń dostarczanych przez MySQL, takich jak C3P0 .

Inny problem z kodem, który opublikowałeś, polega na tym, że PooledConnection#getConnection() zwróci podstawę połączenie, które zatem nie połączenie w puli. Wywołanie tej funkcji nie przywróci połączenia do puli, ale po prostu ją zamknie. Pula musi za każdym razem tworzyć nowe połączenie.

Następnie historia o bezpieczeństwie wątków, która zależy od rzeczywistego kwestionowana struktura puli połączeń. C3P0 udowodnił swoją solidność od lat, nie martw się tym, dopóki piszesz kod JDBC zgodnie ze standardowym idiomem, tj. używaj tylko interfejsy JDBC i zdobądź i zamknij wszystkie zasoby (Connection , Statement i ResultSet ) w możliwie najkrótszym zakresie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wstaw do MySQL Z innej tabeli

  2. Wyzwalacze PHP MySQL - Jak przekazać zmienne do wyzwalacza?

  3. Jak używać OdbcParameter dla MySQL?

  4. Metoda haszowania hasła Mysql stara vs nowa

  5. Jak mogę postawić dwa warunki w posiadaniu klauzuli?