I was working with my colleague JH the other day, and he said something that really struck me as kind of a wise ideal.
When he is designing or developing a module, he continually asks himself about the persisted information "How would I write the SQL to get this information out of the DB?"
This question reminds him that the ORM tool is not going to be the only consumer of this information. Later on someone is inevitably going to want to get a report generated off of the information…
On a meta-level I think this brings up a point I’ve heard/seen discussed quite a bit. Though you may use 3rd party tools (like an ORM tool), it is really important to have at least a little bit of visibility into what this third party is actually going to be doing.
I believe that generally knowing what kinds of things Hibernate is doing behind the scenes has helped me out of a tight spot once in a while!