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