Connection-Pool Library
🚀

Connection-Pool Library

notion image

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ść.

notion image
Video preview
 

🎯 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 jak Semaphore i Lock.
  • ObsĹ‚uga zapytaĹ„ o połączenia i ich zwalnianie: Klasa ConnectionPool udostÄ™pnia metody getConnection() i releaseConnection(), 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 przekracza maxPoolSize, tworzone sÄ… nowe połączenia.
  • Mechanizm usuwania nieaktywnych połączeĹ„: Metoda removeIdleConnection() oraz harmonogram startConnectionRemovalScheduler() pozwalajÄ… na regularne sprawdzanie puli i usuwanie nieaktywnych połączeĹ„, ktĂłre przekraczajÄ… minimalny rozmiar puli minPoolSize. DziÄ™ki temu zasoby sÄ… zwalniane i nieuĹĽywane połączenia sÄ… eliminowane.
notion image

🚀 Technologie i biblioteki


  • Java 21
  • PostgtreSQL
  • JUnit
  • Log4j2
  • Lombok
  • Gradle
notion image

đź“‚ 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 └── ...
notion image

🚀 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:
      • src/com/jakub/bone/data/AirportDatabase.java
    • ZastÄ…p dane logowania swoimi:
      • private String user = "twoj_uzytkownik"; private String password = "twoje_haslo";
 
  • Zbuduj projekt:
    • ./gradlew build
notion image

🛠️ 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);
notion image

đź”— Repozytorium


Connection-Pool-Library
jakubBone • Updated Mar 28, 2025