Use the Statement object for time-critical or dynamic SQL statements
When it comes to executing a SQL statement, you have two choices: you can use a PreparedStatement object or a Statement object. A PreparedStatement parses and compiles a SQL statement once, no matter how many times you reuse it. When you use a Statement, each time a SQL statement is executed, it is again parsed and compiled. This might lead you to think that using a PreparedStatement would be faster than using a Statement; however, my tests show this is not the case on the client side. So, for time-critical SQL operations, unless you are going to batch SQL statements, you should consider using Statements.
Anybody has your voices for/against the points above ? is this statement testable?
Since a preparedstatement is a more complex data structure than a statement I am not surprised that it takes longer to run, but most of the time for code maintainability I would pick a prepared statement over a statement even if I was not sending it any parameters.
With a PreparedStatement with Bind variables, after the first use and hard parse, subsequent executions will re-use the already generated query plan.
Hard coded literals and hard parsing will not only use more resources in the database, but will also serialize access to shared memory structures used by the database. The application will not scale.
Any performance gain on the client side from using a Statement object will be lost on the DB side if it is re-used.