I am using in-memory derby db for my java application. I must remove all of the tables/databases it produced when the application finishes. Then when it begins support, I would like it to start fresh.

Should you application uses merely a single database connection, then derby global temporary tables provides the thing you need.