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?