Po zamknięciu połączenia z bazą danych w java, mogę je ponownie otworzyć? Czy muszę ponownie wykonać numer DriverManager.getConnection()
?Ponowne otwarcie połączenia z bazą danych w Javie
Odpowiedz
Nie jestem w 100% pewien, czy potrzebuje, aby zadzwonić pod numer DriverManager.getConnection()
, ale co za szkoda? Już zamknąłeś połączenie, po prostu weź nowy, kiedy go potrzebujesz. Śmieciarz martwi się o to zamknięte połączenie po jego odrzuceniu.
Tak, nie możesz nic zrobić po zamknięciu połączenia. trzeba zadzwonić getConnection
Jak Javadoc wspomina:
getConnection: Attempts to establish a connection to the given database URL.
Dlatego tak, nazywając getConnection() znowu wygląda jedyny sposób nawiązania nowego połączenia z bazą danych po zamknięciu poprzedniego połączenia.
Po wywołaniu connection.close();
, connection
(przyjmując typ java.sql.Connection
) staje się bezużyteczny. Ta operacja zwalnia bazę danych tego obiektu połączenia i zasoby JDBC.
Więc Tak trzeba dostać świeże połączenie, gdy zanim będzie można przejść przez
connection = DriverManager.getConnection()
Właśnie zacząłem robić JDBC z połączeniami SQL Server po zrobieniu wszystkiego w C# i chłopak był wielką tajemnicą przez pół dnia wczoraj. – JoeManiaci
Well idealnie zrobiłem nieco innego podejścia i dał inne rozwiązanie.
Zamiast otwierać i zamykać bazę danych, co dosłownie dzieje się na każdym żądaniu klienta, wykonałem pojedynczą instancję klasy i wykonałem pojedyncze otwarte połączenie, które będzie ponownie wykorzystywane tak długo, jak długo serwer będzie działał.
W skrócie:
mam getConnection()
wewnątrz Database
klasy
public Connection getConnection() throws Exception {
try {
String connectionURL = "jdbc:mysql://localhost:3306/someDatabase";
Class.forName("com.mysql.jdbc.Driver").newInstance();
if (connection == null) {
connection = DriverManager.getConnection(connectionURL, "someUser", LOCAL_MYSQL_PASSWORD);
}
return connection;
} catch (Exception e) {
}
}
Klasa Database
Singleton, a tym samym ponowne użycie tej samej klasy i ponowne użycie tego samego połączenia.
Przetestowałem to przez show processList
, a ten dał około 100 połączeń. Jeśli nie zamknę połączenia, a nawet jeśli zamknę połączenie, faktyczny proces prawdopodobnie nie zostanie zabity, ale zostanie uśpiony zamiast tego będzie on używany, gdy ten sam klient poprosi o to samo żądanie, ale jeśli masz 15 żądań, to każdy z nich będzie miał osobne procesy, więc zamknięcie i otwarcie połączenia nie było najlepszym rozwiązaniem.
Dzięki temu mam 1 pojedynczy proces, który jest odpowiedzialną warstwą dla zapytań.
- 1. Informacje dotyczące połączenia z bazą danych
- 2. Gdzie umieścić ustawienia połączenia z bazą danych?
- 3. Zamknij połączenia z bazą danych po nieaktywności
- 4. Błąd połączenia z bazą danych Azure.
- 5. Jak zdefiniować dwa połączenia z bazą danych MySQL w Sails.js
- 6. Brak połączenia z bazą danych przez doktrynę w Symfony
- 7. Firebase jednoczesne połączenia w czasie rzeczywistym z moją bazą danych
- 8. Użyj Require_once(), aby poprawnie uwzględnić zmienne połączenia z bazą danych
- 9. Kiedy Entity Framework otwiera i zamyka połączenia z bazą danych?
- 10. Laravel - zmiana domyślnego połączenia z bazą danych na całym świecie
- 11. Fabryka modeli Laravel bez połączenia z bazą danych
- 12. Tworzenie oddzielnego połączenia z bazą danych dla każdego pracownika selera
- 13. Jak utworzyć odtwarzalny przykład połączenia z bazą danych?
- 14. Nie mogę utworzyć połączenia z bazą danych dla Doctrine2 w Symfony2 z MAMP (odmówiono połączenia)
- 15. Otwarcie sesji bazy danych
- 16. Ponowne wykorzystanie połączenia TCP z HttpsUrlConnection
- 17. Ponowne użycie SSL połączenia z Androidem HttpClient
- 18. Próbki WPV MVVM z bazą danych
- 19. Kiedy należy zamknąć połączenie z bazą danych w PHP?
- 20. tropienia połączenie z bazą danych wydaje
- 21. Transakcja z bazą danych Magento
- 22. Tabela z trójwymiarową bazą danych
- 23. Heroku z bazą danych H2
- 24. problemy z połączeniem z bazą danych w laravel 5
- 25. Tworzenie lokalnego połączenia między bazą danych mysql a php
- 26. Testowanie phpunit z bazą danych
- 27. Jak zarządzać połączeniem z bazą danych w pakiecie R
- 28. opublikować projekt z lokalną bazą danych
- 29. Jak połączyć się z bazą danych postgres Heroku z lokalnego połączenia w php
- 30. Jaki jest sposób radzenia sobie z niepowodzeniem połączenia z bazą danych w Django 1.2?
Co jest tak trudne do wypróbowania? –
Widzisz również otwartą metodę połączenia? – MrJames
Nie widzę żadnej otwartej metody w połączeniu. Jak mogę to wypróbować? Wywołanie 'getConnection' będzie działało, wypróbowało to, ale czy jest to" poprawny "sposób? –