Connection con=null;
try
{
con = ...getConnection();
Stetement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(...);
rs.close();
rs=null;
stmt.close();
stmt=null;
}
finally
{
if(con!=null)
{
try { con.close(); } catch(SQLException e0) {}
}
}
Je zase nejuvadenejsi priklad v Jbossu. Krom toho rs.close() rs=null
ResulSet a Stement by mel uzavrit GC a connection by na ne nemela drzet
referenci, ale kdy k tomu dojde... rs.close() je uvolneni na DB (zavreni
kursoru) a rs=null je signal pro GC.
Taky si myslim, ze by melo stacit to uzavreni ve finally sekci a
to zavirani a nastaveni na null jeste v try sekci je zbytecne.
S temi DBUtils bych by opatrny, pokud jenom zaviraji Connection,
tak to nestaci, protoze Connection v TomCatu je jenom obalovatko,
jehoz close() vrati spojeni do poolu, neuzavre ho. Takze kdyz
neuzavrete ResultSety a Statementy, zustanou otevrene.
V normalni aplikaci bez poolu by se ResultSety a Statementy
uzavrely pri uzavreni Connection, cimz by se to tise vyresilo.
To pri pouziti poolu neplati.