Originally posted by fahad siddiqui: Why should we choose one over the other? What are the advantages enjoyed?
If you have a stored procedure, you should use CallableStatement. A PreparedStatement is not guaranteed to work across all databases and drivers. This makes your code less robust. While you probably aren't changing databases with stored procs, you are likely to upgrade the driver.
Oracle fixed a bug in getDate() in Oracle 10 which caused legacy code to break that was relying on a side effect. If you follow the spec (or intent of the API), you protect your code against future changes.