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

Zamykanie połączeń JDBC w puli

Czy podczas korzystania z puli połączeń należy zamknąć połączenie na końcu? Jeśli tak, to czy cel łączenia nie jest stracony? A jeśli nie, w jaki sposób DataSource wie, kiedy konkretna instancja Connection jest zwolniona i może zostać ponownie wykorzystana? Jestem trochę zdezorientowany w tym przypadku, wszystkie wskazówki są mile widziane.

Tak, z pewnością musisz również zamknąć połączenie w puli. W rzeczywistości jest to opakowanie wokół rzeczywistego połączenia. Pod osłonami uwolni rzeczywiste połączenie z powrotem do basenu. Dalsza część grupy zależy od decyzji, czy rzeczywiste połączenie faktycznie być zamkniętym lub ponownie użytym dla nowego getConnection() połączenie. Tak więc, niezależnie od tego, czy korzystasz z puli połączeń, czy nie, powinieneś zawsze zamknij wszystkie zasoby JDBC w odwrotnej kolejności w finally blok try bloku, w którym je zdobyłeś. W Javie 7 można to jeszcze bardziej uprościć, używając try-with-resources oświadczenie.

Czy poniższa metoda jest zbliżona do standardu? Wygląda na próbę uzyskania połączenia z puli, a jeśli nie można nawiązać DataSource, użyj przestarzałego DriverManager. Nie jesteśmy nawet pewni, która część jest wykonywana w czasie wykonywania. Powtarzając powyższe pytanie, czy należy zamknąć połączenie wychodzące z takiej metody?

Przykład jest dość przerażający. Wystarczy wyszukać/zainicjować DataSource tylko raz podczas uruchamiania aplikacji w jakimś konstruktorze / inicjalizacji całej aplikacji klasy konfiguracyjnej DB. Następnie po prostu wywołaj getConnection() w jednym i tym samym źródle danych przez resztę życia aplikacji. Nie ma potrzeby synchronizacji ani sprawdzania wartości null.

Zobacz też:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 2017 @ Severalnines:Celebrujemy historie naszych klientów

  2. MySQL SELECT WHERE datetime pasuje do dnia (a niekoniecznie do godziny)

  3. Wizualne tworzenie baz danych za pomocą MySQL Workbench

  4. MySQL - ile wierszy mogę wstawić w jednej instrukcji INSERT?

  5. Klucz obcy MySQL InnoDB między różnymi bazami danych