My views of database application design are always evolving. I am still a big fan of starting with a few simple tools and focusing on adding functionality. Now I'm using Oracle Application Server instead of Tomcat because it comes with Apache integrated and it seems a little faster. I was making a tongue-in-cheek remark when I advocated HSQL over Oracle and I hope that was obvious.
My biggest change in design philosophies in the past 3 years is my belief that stored procedures should implement business logic and the middle tier should really only implement logic that can't be expressed in PL/SQL. Stored procedures in PL/SQL allow you to support more kinds of clients and it always performs better. They also allow for more flexibility when it comes to maintaining the physical layout of the data. They aren't Object Oriented and it doesn't really matter, because the kinds of problems they solve - pure business logic problems - don't require Object Orientation.
There are, however, some pitfalls to using PL/SQL for everything. If you use PL/SQL as a wrapper for update or create statements that don't have any business logic involved, then you are introducing an unnecessary dependency. Generally you will deploy your Java application as an EAR file and the PL/SQL will be deployed separately. You now have the management problem of tracking the PL/SQL routine independantly of the rest of the code to make sure they are deployed together. Not a big deal, but a place where something can go wrong.
I've come to the conclusion that PL/SQL should be used if and only if a business decision needs to be made in some operation on the database.