PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zarządzać połączeniami db na serwerze?

Utrzymywanie Connection otwarte na zawsze to bardzo zły pomysł. Nie ma nieskończonego czasu życia, aplikacja może ulec awarii, gdy baza danych przekroczy limit czasu połączenia i je zamknie. Najlepszą praktyką jest zdobycie i zamknij Connection , Statement i ResultSet w najkrótszym możliwy zakres, aby uniknąć wycieków zasobów i potencjalnych awarii aplikacji spowodowanych przez wycieki i przekroczenia czasu.

Ponieważ łączenie bazy danych jest kosztownym zadaniem, powinieneś rozważyć użycie puli połączeń, aby poprawić wydajność łączenia. Porządny serwer aplikacji/kontener serwletów zwykle już udostępnia funkcję puli połączeń w postaci JNDI DataSource . Zapoznaj się z jego dokumentacją, aby dowiedzieć się, jak go utworzyć. W przypadku np. Tomcata znajdziesz go tutaj.

Nawet korzystając z puli połączeń, nadal musisz napisać poprawny kod JDBC:zdobądź i zamknij wszystkie zasoby w możliwie najkrótszym zakresie. Pula połączeń z kolei będzie się martwić faktycznym zamknięciem połączenia lub po prostu zwolnieniem go z powrotem do puli w celu dalszego wykorzystania.

Możesz uzyskać więcej informacji z tego artykułu, jak prawidłowo wykonać podstawy JDBC. Jako zupełnie inną alternatywę, naucz się EJB i JPA. Wydzieli dla Ciebie wszystkie schematy JDBC w jednowierszowe.

Mam nadzieję, że to pomoże.

Zobacz też:

  • Czy używanie statycznej instancji java.sql.Connection w systemie wielowątkowym jest bezpieczne?
  • Czy używam puli połączeń JDBC?
  • Jak powinienem połączyć się z bazą danych/źródłem danych JDBC w aplikacji opartej na serwlecie?
  • Kiedy konieczne lub wygodne jest używanie Springa, EJB3 lub ich wszystkich razem?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy jest jakiś sposób na wykonanie zapytania wewnątrz wartości ciągu (np. eval) w PostgreSQL?

  2. Jak ustawić limit rozmiaru danych typu int w PostgreSQL 9.5?

  3. Uaktualnić kolumnę PostgreSQL JSON do JSONB?

  4. Izolacja transakcji w PostgreSQL

  5. Jak zmapować tablicę PostgreSQL za pomocą Hibernate?