Souhlas, JDBC sux. Proč autoři Javy nepíší platformu tak aby se dala používat, a musí se i základní věci lepit různými knihovnami třetích stran? Za mě je to značná nevýhoda.
jdbc vzniklo asi v 199x a preto je api take ake je. navyse polovica problemov ide od zlych driverov od vendorov.
JDBC je chory z definice. Od zacatku to vypada, jako by autori nikdy nevideli jinou databazi nez MySQL. Od zacatku se snazi podporovat nejmensi spolecny jmenovatel vsech databazi. Autocommit je by-default zapnuty proboha proc? Protoze MySQL nepodporuje transakce? V te dobe uz jim to melo byt jasny, ze je to spatne. MySQL nepodporuje named bind variables, tak JDBC to nebude umet taky?
JDBC podporuje pouze skalarni datove typy: NUMBER, STRING a DATE. A i s tim datumem ma spousta lidi problemy (viz java.util.date vs. java.sql.date).
Anebo JDBC 4.0. java.sql.Connection.createBlob(): "LOB creation - New methods, createBlob() and createClob() let you create empty Blobs and Clobs, which you can then fill up before stuffing into a column.". Ok tak vytvorim blob, zapisu do nej desitky GB dat a pak ten blob vlozim do nejaky radky v databazi. (jako bind variable). S tim jako ma ta databaze delat? To funguje v pripade MySQL JDBC driveru, ze je max. velikost blobu 30MB. Anebo se to (v pripade Oracle kopiruje z disku TEMP tbs na disk DATA tbs). Navic databaze netusi kdy GC ten objekt uvolni a ty data lezi v TEMP tablespace dokud se neuzavre db spojeni.
Uznavam navrhnout jednotny API pro ruzny databaze je tezky (skoro nemozny), ale pred tim uz tu byl pokus s ODBC, tak se mohli poucit z cizich chyb.