[Java lista] connection pool probléma

Tamás Magyar magyusz at gmail.com
2009. Dec. 1., K, 12:26:34 CET


2009/12/1 Gábriel Ákos <akos.gabriel at i-logic.hu>:
> On Tue, 2009-12-01 at 11:58 +0100, Keresztes Jozsef wrote:
>> Oracle drivernél jön elő ez a probléma,
>> konkrétan az ojdbc6.jar-t használjuk.
>>
>> Szerintem ezt a problémát programból kell kezelni,
>> egy tranzakciót alapból így kellene minimálisan kezelni:
>>
>> Connection connection = null;
>> try {
>>   connection = getXxx(); // ezzel megkapjuk
>>   connection.setAutoCommit(false);
>>   ...DML parancsok...
>>   int i = 1/0; //nem várt hibu
>>   ...DML parancsok...
>>   connection.commit();
>> }
>> finally {
>>   try { connection.rollback(); } catch (Exception e) {}
>>   try { connection.close(); } catch (Exception e) {}
>> }
>>
>
> Ezt a rollbacket ide nem erőltetném.

Hát igen, a rollbacknek normál esetben a catch ágban van a helye.

Spring vagy más AOP megoldás használatával plain JDBC esetén is az
egész boilerplate maszlagot el lehet felejteni / ki lehet szervezni
aspektusba (interceptor / advice).

A commit / rollback on close témára nem értem, hogy ennyi válasz után
miért nem írta még senki, hogy UTFJD:
http://java.sun.com/javase/6/docs/api/java/sql/Connection.html#close%28%29
It is strongly recommended that an application explicitly commits or
rolls back an active transaction prior to calling the close method. If
the close method is called and there is an active transaction, the
results are implementation-defined.

Vigyázzatok, mert van olyan Oracle JDBC driver verzió, ami close
esetén commitol!


Magyusz


További információk a(z) Javalist levelezőlistáról