sql >> Databasteknik >  >> RDS >> Mysql

Stänger JDBC-anslutningar i pool

Bör man stänga anslutningen i slutet när man använder Connection Pool? Om så är fallet, är inte syftet med poolningen förlorat? Och om inte, hur vet datakällan när en viss instans av anslutning frigörs och kan återanvändas? Jag är lite förvirrad angående den här, alla tips uppskattas.

Ja, definitivt måste du stänga den poolade anslutningen också. Det är faktiskt ett omslag runt själva anslutningen. Den kommer under täcket att släppa den faktiska anslutningen tillbaka till poolen. Det är vidare upp till poolen att avgöra om den faktiska anslutningen ska faktiskt stängas eller återanvändas för en ny getConnection() ringa upp. Så oavsett om du använder en anslutningspool eller inte, bör du alltid stäng alla JDBC-resurser i omvänd ordning i finally block av try block där du har köpt dem. I Java 7 kan detta förenklas ytterligare genom att använda try-with-resources uttalande.

Är följande metod i närheten av standarden? Ser ut som ett försök att få en anslutning från poolen, och om DataSource inte kan etableras, använd den gammaldags DriverManager. Vi är inte ens säkra på vilken del som körs under körning. Upprepa frågan ovan, ska man stänga anslutningen som kommer ut av en sådan metod?

Exemplet är ganska skrämmande. Du behöver bara slå upp/initiera DataSource endast en gång under programmets start i någon konstruktor/initiering av en programomfattande DB-konfigurationsklass. Ring sedan bara getConnection() på en och samma datakälla under resten av programmets livstid. Inget behov av synkronisering eller nollkontroller.

Se även:



  1. Översikt över DBCC CheckDB-funktion

  2. MariaDB JSON_ARRAY_INSERT() Förklarad

  3. MySQL vs. MongoDB

  4. PostgreSQL-installation på Docker