Originally posted by Brandon Tom: I know that JDBC basically allows you to ignore the specific database.
Sadly, that's not nearly as true as anyone would like. While there's a very very large "common denominator" among the major DBs when using JDBC, there's still a huge amount of DB-specific stuff that intermediate-to-advanced developers get into.
A quick casual example is the vendor default behavior when Statement.setFetchSize() hasn't been called. Some vendor's drivers will by default will fetch a single row at a time, thereby creating an I/O bottleneck; some drivers will fetch all returned rows in the ResultSet, thereby creating a scaling problem with large results (running you out of memory, typically), and some drivers have default fetch sizes that avoid these extremes, but may still not be right for your situation.