"castor" also allows you to define dynamic object model and it generates POJOs in compile time and map them to a data representation in runtime, this way you can alter tables and deliver a patch with a new xml object model. this can be used with DAOs too
ibatis (the new version) could also be another option