If you must do this, you should look at the MyBatis project. I haven't used it, but have heard it recommended a number of times.
Separating SQL and Java isn't my favorite approach, since SQL is actually code, and is tightly coupled to the Java code that calls it. Maintaining and debugging the separated code can be challenging.
Absolutely don't used stored procs for this. They should only be used to improve performance by reducing traffic between the DB and the application.