It’s been two months since my last entry so I’ve been lagging on the blog. However, I’ve been busy as a bee and have learned quite a bit from my recent project experience…

For starters, let me say that I am a huge fan of Hibernate, XWork/WebWork2 and SiteMesh! IMHO, this combination allows you to create applications with a consistent look and feel, as well as a clean well-structured code base with a minimum amount of fuss. I’ll admit that WebWork2 is still a bit rough around the edges (hey, it’s beta – what do you expect?) but I think this is going to be a killer framework once it hits the release stage.

As for XDoclet, I believe it’s an excellent tool but I’ve stopped using it in favor of writing my own code generator. Why would I write my own code generator you may ask? For starters, I’ve gotten pretty comfortable with creating Hibernate mapping files and it makes more sense (to me, at least) to use my Hibernate mapping files as the meta data for my code generator and from there I can generate my domain objects, DAOs, WebWork2 Actions & xwork.xml file, JSPs, etc. My secondary motivation is that my work on Full Circle has halted during my contract work due to the long hours and I feel that taking the time to write a code generator that will build a skeletal application from my Hibernate mapping files would be a lot more efficient and productive than hammering out one module at a time. Lastly, I finally got around to reading Code Generation in Action and it’s really turned me on to the subject. The code generators in the book are based on Ruby, REXML and ERb which are easy enough to follow for a non-Ruby programmer. However, I found some of Ruby’s and ERb’s syntax to be a bit more cluttered than I’d prefer so I looked into a Python-based solution (I’ve been looking for an excuse to learn Python) and ran across Cheetah which has been incredibly easy to use. I’ve only been using Python and Cheetah for the last couple of nights but my code generator is already generating my domain objects, DAOs & WebWork2 action classes so I can’t imagine this being any easier.

As for the work front, I just wrapped up a major contract project so I’m taking some time off to spend with the family for the holidays, to finish my code generator and kick-start Full Circle, and to look for something more permanent before I accept my next contract project. If I’m lucky, I’ll find something that allows me to continue working with these great technologies or any of the various technologies on my to-do/wish list. 🙂