pátek 13. srpna 2004

JTDS 0.8.1 aneb čekali jsme dlouho

Už dlouho pracujeme v našich aplikací s MSSQL databází. Nejprve jsme používali standardní sunovský driver, pak jsme hledali nějaký lepší od Microsoftu (jenomže ten je až pro SQL2000) až jsme našli JTDS.

Byli jsme nadšeni, umělo to téměř všechno, co jsme tehdy potřebovali. Časem sice vyvstali potíže s instancema u SQL2000 (pozn. Dagi - 0.7.1 a předešlé verze instance vůbec nepodporovaly), kde musíme použít microsoftí driver, ale jinak to šlo. Až na rowsAffected!

Nevím jaký máte názor na řízení programu pomocí kontroly rowsAffected? U nás ve firmě jsou příznivci i odpůrci. Já jsem patřil k zastáncům, toho že pokud provedu nějaký statement.executeUpdate, pak klidně mohu postavit logiku programu na tom, jaký vrátí počet rowsAffected (obyvykle nás stejně zajímá 0,1 nebo n).

Bohužel JTDS tehdy neuměl správně vracet tento údaj, až konečně s verzí 0.7.1 začala tato funkčnost pracovat. Další problém, se kterým jsme se u JTDS setkali jsou batchUpdate. Jsou situace, kdy použít nejdou: např. mám 50 téměř stejných insertů(updatů, deletů) nad 1 tabulkou, což by byl ideální příklad pro batchUpdate, pokud by ovšem ta tabulka nebyla moc frekventovaná, což zrovna v mém případě byla.

Moje sekvence batchUpdatů pozamykala pěkně celou tabulku a bylo vymalováno, stačilo pak nechat každý insert(update, delete) samostatně a bylo vše v pořádku. Ale v situacích, kdy je jeho užití ideální, jsme krásně zakomponovali batchUpdate, jaké však bylo naše překvapení, když se nám při testování objevovali hlášky: Method not supported yet apod. I to už je historií s novým JTDS. Stranou nechávám takové dětské mouchy jako nemožnost insertu (INSERT-VALUES) více než cca 40 sloupců apodob., které JTDSáci opravili ve verzi 0.7.1.

Proč je tedy verze 0.8.1 tak zajímavá? Inu tím, že ji otestovali pod Hibernate, a doladili mušky, které by se jim jinak neprojevili. Tímto se dodatečně omlouvám mému kolegovi TZ, který dva dny úporně přemýšlel, proč mu v Hibernatu ty rowsAffected nějak nefungují, když už by od 0.7.1 měli. Příště musím inovovat drivery častěji :-) . Taže už mám jenom poslední přání, ať už konečně umí JTDs instance SQL200.