At work, I’ve been using XDoclet/Hibernate for the object persistence framework. And it works very well. It’s nice having all the database physical properties (tables, columns) defined in one place and access the database logically rather than physically. I was also surprised how comprehensive and readable the documentation are.
One limitation that I’ve come across is that XDoclet for Hibernate doesn’t support composite primary keys. Only a single artificial primary key is supported, but this is pretty much the standard practice anyways.
XDoclet+Hibernate:
XDoclet for Hibernate
Tag Reference, Mirror
Object to Relational Mapping and Relationships with Hibernate
Hibernate:
Hibernate
BlueMars
A Hitchhiker’s Guide to Hibernate
XDoclet:
XDoclet