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

Uzavření připojení JDBC ve fondu

Pokud používáte fond připojení, měli byste připojení na konci zavřít? Pokud ano, není účel sdružování ztracen? A pokud ne, jak DataSource ví, kdy je konkrétní instance Connection uvolněna a může být znovu použita? Jsem v tom trochu zmatený, ocením jakékoli náznaky.

Ano, určitě musíte také zavřít sdružené připojení. Je to vlastně obal kolem skutečného připojení. Pod kryty uvolní skutečné spojení zpět do bazénu. Je dále na fondu, aby rozhodl, zda skutečné připojení bude skutečně být uzavřen nebo znovu použit pro nový getConnection() volání. Bez ohledu na to, zda používáte fond připojení či nikoli, byste měli vždy zavřete všechny zdroje JDBC v obráceném pořadí v finally bloku try blok, kde jste je získali. V Javě 7 to lze dále zjednodušit pomocí try-with-resources prohlášení.

Je následující metoda něco blízko standardu? Vypadá to jako pokus získat připojení z fondu, a pokud nelze vytvořit zdroj dat, použijte staromódní DriverManager. Nejsme si ani jisti, která část se provádí za běhu. Opakuji výše uvedenou otázku, mělo by se zavřít připojení vycházející z takové metody?

Příklad je dost děsivý. Stačí vyhledat/inicializovat DataSource pouze jednou během spouštění aplikace v nějakém konstruktoru / inicializaci třídy konfigurace DB pro celou aplikaci. Pak stačí zavolat getConnection() na jednom a stejném zdroji dat po zbytek životnosti aplikace. Není potřeba synchronizace ani kontroly null.

Viz také:



  1. Máte problémy s padáním MS Access? Nejprve vyzkoušejte tato řešení

  2. Operand by měl obsahovat 1 sloupec – MySQL NENÍ IN

  3. Chyba syntaxe kvůli použití vyhrazeného slova jako názvu tabulky nebo sloupce v MySQL

  4. Převod číslic/čísel ve slovech pro měnu INR (indické rupie) v Oracle PL/SQL