sql >> Databáze >  >> RDS >> Mysql

Používám Java PooledConnections správně?

Toto není správná cesta. Zdroj dat musí být spravován jakýmkoli kontejnerem, ve kterém aplikaci spouštíte. MysqlConnectionPoolDataSource není bazén připojení. Je to jen konkrétní implementace javax.sql.DataSource rozhraní. Normálně jej definujete v kontextu JNDI a získáváte jej odtud. Také samotná MySQL to vše výslovně uvádí v jejich dokumentaci .

Nyní, jak ji používat, závisí na účelu aplikace. Pokud se jedná o webovou aplikaci, musíte se podívat do dokumentace zdrojů JNDI příslušného servletcontainer/appserveru. Pokud je to například Tomcat, pak jej najdete zde . Pokud spouštíte klientskou aplikaci – pro kterou bych velmi zpochybňoval hodnotu fondu připojení –, pak musíte hledat rámec sdružování připojení, který může využívat zdroj dat sdružených připojení poskytovaný MySQL, jako je např. C3P0 .

Dalším problémem s kódem, který jste zveřejnili, je to, že PooledConnection#getConnection() vrátí podklad připojení, které tedy není sdružené připojení. Zavřít na něj spojení nevrátí, ale opravdu ho uzavře. Fond musí pokaždé vytvořit nové připojení.

Potom příběh o bezpečnosti vláken, který závisí na skutečném dotyčný rámec sdružování připojení. C3P0 prokázal svou robustnost za léta, nemusíte se o to starat, pokud píšete JDBC kód podle standardního idiomu, tedy používejte pouze rozhraní JDBC a získat a zavřete všechny zdroje (Connection , Statement a ResultSet ) v nejkratším možném rozsahu.




  1. Připravený výpis s ON DUPLICATE KEY

  2. UTL_FILE.FREMOVE Příklad:Odstranění souboru v Oracle

  3. Úlohy hybridní databáze OLTP/Analytics:Replikace dat MySQL do ClickHouse

  4. Jak vytvořit postgres rozšíření uvnitř kontejneru?