I would think you want the def in the database. I assume you will want to historically track your transactions back to the definition. If you create it on the fly, you will never know for sure what the process was at that time. Plus you run the risk of your def being changed and the problem not being caught until you run an instance of it.
I can think of a dozen reasons for putting it in the database. The versioning of process definitions is one of the things I really like about jBPM.