Witam!
Mam aplikację internetowa, która korzysta z puli połączeń, dokładniej servlet, który jest kontrolerem aplikacji, i klasę, która posiada wszystkie metody, które służą do obsługi bazy danych, powiedzmy nazywa się databaseUtil. I teraz, jeżeli w kontrolerze, chcąc pobrać zasób x z bazy danych, uruchamiam metodę getX z obiektu klasy databaseUtil, która zwraca ResultSet, a ten rozkładam i przekazuje do wektora z obiektami klasyX i przekazuję do widoku. Sprawa tyczy się właśnie pobieranie połączenia z puli połączeń, tzn: gdy tworzę obiekt klasy databaseUtil, w konstruktorze mam pobranie połączenia z puli, i wywołuję jakąś metodę, mniej więcej tak
public class databaseUtil
{
private dbPool dbp = null;
private Connection conn = null;
public databaseUtil()
{
this.dbp = new dbPool(); // dbPool to singleton
this.conn = dbp.getConnection();
}
getX()
{
try
{
//zapytania i wykonywanie
}
catch(Exception e)
{
//obsługa wyjątki
}
finally
{
this.dbp.freeConnection(this.con);
}
}
I teraz mój problem, jeżeli zwrócę połączenie do bazy, to teoretycznie zostanie ono zwrócone, ale praktycznie istnieje ono nadal, natomiast jeżeli przy zwracaniu ustawie je na null, to do wykonania w kontrolerze dwóch zapytań o zasoby, będę musiał tworzyć dwa obiekty z databaseUtil. Jest jeszcze trzecia możliwość, mogę w każdej metodzie ustanawiwać połączenie i go zwracać, ale wtedy wydaje mi się, że jest to mało optymalne... Co o tym sądzicie?
Pozdrawiam!