Connection pooling

Zejména v prostředí aplikačních serverů nebo webových kontejnerů se uplatňuje metoda recyklace spojení s databází. Jde o to, že většinou má navázaní spojení nezanedbatelnou režii a také otevřené spojení spotřebovává systémové zdroje. Proto je součástí aplikačního serveru nebo kontejneru správce spojení, který otevře určitý počet spojení s databází a tyto otevřená spojení pak podle potřeby přiděluje běžícím procesům.

Když aplikace potřebuje spojení s databází, nenavazuje jej přímo, ale použije služeb tohoto správce. Když už spojení nepotřebuje, vrátí jej, a správce toto spojení může poskytnout dalšímu procesu.

Funkci správce spojení zajišťuje tovární třída implementující rozhraní javax.sql.DataSource. Instanci této třídy získáme nejčastěji pomocí JNDI:

Context context = new InitialContext().lookup("java:comp/env");
DataSource source = (DataSource) context.lookup("jdbc/test");

// Spojení získáme pomocí metody getConnection()
Connection conn = source.getConnection();

// ...

// Zavoláním metody close() spojení vrátíme 
conn.close();

Typ JDBC ovladače a URL pro spojení s databází označenou jdbc/test se v tomto případě nastavuje v konfiguraci serveru či kontejneru.

Ne každá implementace rozhraní javax.sql.DataSource musí provádět recyklaci spojení (connection pooling). I v takovém případě však zůstává její výhodou právě oddělení konfigurace přístupu k databázi od vlastního kódu programu.