Biblioteka Connection-Pool to moja własna implementacja w języku Java, służąca do zarządzania pulą połączeń do bazy danych. Przygotowałem to, jako alternatywę dla gotowych rozwiązań, aby lepiej zrozumieć zarządzanie połączeniami oraz wielowątkowość.

Â
🎯 Funkcjonalności
- System zarządzania połączeniami: Klasa
DatabaseConnection
odpowiedzialna za ustanawianie połączeń z bazą danych, zarządzanie parametrami połączeń (użytkownik, hasło, URL, itp.), logowanie informacji o stanie połączeń oraz obsługę błędów podczas nawiązywania i zamykania połączeń.
- Pula połączeń:Klasa
ConnectionPool
zarządza pulą połączeń do bazy danych. Na starcie aplikacji inicjalizowana jest określona liczba połączeńminPoolSize
, kontrolowana jest maksymalna liczba połączeńmaxPoolSize
oraz zapewniona jest synchronizacja i bezpieczeństwo wielowątkowe za pomocą mechanizmów takich jakSemaphore
iLock
.
- Obsługa zapytań o połączenia i ich zwalnianie: Klasa
ConnectionPool
udostępnia metodygetConnection()
ireleaseConnection()
, umożliwiające pobieranie i zwracanie połączeń z/do puli. W przypadku braku dostępnych połączeń, jeżeli liczba połączeń w puli nie przekraczamaxPoolSize
, tworzone są nowe połączenia.
- Mechanizm usuwania nieaktywnych połączeń: Metoda
removeIdleConnection()
oraz harmonogramstartConnectionRemovalScheduler()
pozwalają na regularne sprawdzanie puli i usuwanie nieaktywnych połączeń, które przekraczają minimalny rozmiar puliminPoolSize
. Dzięki temu zasoby są zwalniane i nieużywane połączenia są eliminowane.
🚀 Technologie i biblioteki
- Java 21
- PostgtreSQL
- JUnit
- Log4j2
- Lombok
- Gradle
đź“‚ Struktura Projektu
. ├── src │ ├── main │ │ └── java │ │ ├── connection_pool # Logika zarządzania pulą połączeń │ │ └── data # Obsługa połączeń do bazy danych │ └── test # Testy jednostkowe i wydajnościowe ├── build.gradle # Konfiguracja budowania projektu └── ...
🚀 Implementacja
- Upewnij siÄ™, ĹĽe masz zainstalowane:
- Java Development Kit (JDK) w wersji 21 lub wyĹĽszej
- Gradle do zarządzania zależnościami
- BazÄ™ danych PostgreSQL
Â
- Sklonuj repozytorium:
git clone https://github.com/user/Connection-Pool-Library.git cd Connection-Pool
Â
- Skonfiguruj bazÄ™ danych:
- UtwĂłrz bazÄ™ danych PostgreSQL
- Zaktualizuj dane logowania w pliku
DatabaseConnection.java
- ĹšcieĹĽka do pliku:
- ZastÄ…p dane logowania swoimi:
src/com/jakub/bone/data/AirportDatabase.java
private String user = "twoj_uzytkownik"; private String password = "twoje_haslo";
Â
- Zbuduj projekt:
./gradlew build
🛠️ Przykład Użycia
private String user = "twoj_uzytkownik"; private String password = "twoje_haslo"; DatabaseConnection dbConn = new DatabaseConnection("user", "password", "baza", 5432); ConnectionPool pool = new ConnectionPool(10, 100, dbConn); // Pobranie połączenia Connection conn = pool.getConnection(); // Wykonanie zapytań try (Statement stmt = conn.createStatement()) { stmt.executeUpdate("INSERT INTO test_table (data) VALUES ('example');"); } // Zwolnienie połączenia pool.releaseConnection(conn);
đź”— Repozytorium
Connection-Pool-Library
jakubBone • Updated Mar 28, 2025