Ale prave o to tu primarne ide, ze pri pouziti objektu v takejto
kontrukcii stracate nad nim kontrolu (v pripade vynimky alebo po
vykonani cyklu) a nemusi to byt zrovna resultset, ale hocico ine kde
musi byt v spravny cas volany close(). Ak ste uz niekedy dvihal
nastavenia maximalneho poctu otvorenych suborov pre process, len preto
ze sa niekto spolieha na finalizery, tak viete o co ide.
Kazdopadne je toto dost slusny antipattern, a nemal by sa tu ani dalej
preberat aby si ho nejaky ludia nahodou neosvojili.
Roman Kratochvil wrote:
To, ze je to zrovna ResultSet, byl jenom priklad, o to mi primarne neslo.
Nicmene faktem je, ze jsem se zatim nesetkal (troufam si tvrdit) s
JDBC driverem, ktery by ty ResultSety nezaviral pri zavreni Statementu
(ten samozrejme zaviram ve finally...). Delal jsem s MSSQL2000, 2005
(drivery od MS i jTds), MySQL 3.x, 4.x (drivery org.gjt.mm.mysql* i
com.mysql.*), HSQLDB 1.7.x. Myslim, ze i s Oracle 8.5 nebyl problem,
ale to uz je davno, mozna se pletu (resp. mozna to tehdy bylo psane
jinak). Mohl bych se poucit, s jakymi DB/drivery jste zazili problemy?
Diky
Roman
----- Original Message ----- From: "Moravec Jan" <[EMAIL PROTECTED]>
To: "Java" <[email protected]>
Sent: Wednesday, August 23, 2006 5:29 PM
Subject: RE: for vs. while
No jo, ale ve finally ten RS nezavrete, kdyz to je lokalni promenna
toho cyklu. Takze v ty podobe v jake to bylo presentovano, tj.
for (ResultSet res=...; res.next(); )
{
}
je to spise hezky antipattern.
H.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
Behalf Of Stanislav Ošmera
Sent: Wednesday, August 23, 2006 4:41 PM
To: Java
Subject: Re: for vs. while
On 8/23/06, Moravec Jan <[EMAIL PROTECTED]> wrote:
Zdravim,
Asi jsem neco nepochopil, ale jak korektne uzavrete ten otevreny
result set bez toho, ze byste spolehal na to, ze se to "mozna udela
samo" pri zavirani prepared statementu?
Nedoporucuji na prilis spolehat na to, ze se ResultSet uzavre v
okamziku uzavreni statementu (to rika javadoc u ResultSet.close).
Presne, drive jsem se na to spolehal az jsem jednou dost narazil a
musel to prepisovat vsude. Myslim mozna ze je to napsano i v tom
Blochovy ze resultset vzdy zavirat ve finally bloku, nikdy se
nespolehat na zadnou automatiku
--
Stanislav Ošmera
Work: +44 (0)2075 980 348
Cell: +44 (0)7914 635 412
private email: [EMAIL PROTECTED]
work email: [EMAIL PROTECTED]
Skype: sosmera ICQ:149634231