You're getting two things mixed here. Relational DBMS's are optimized
for storing and accessing data in huge amounts, and batch style
operations on them. ORM's cannot compete with SQL here . OTOH, Objects
are designed to hold behaviour & data, send messages and interact,
something that relational model is awfully weak at. Embedding complex
business logic in database's can be as much as a disaster as trying to
perform huge batch style operations using objects.
In defense of hibernate, I've had very good experiences with it and am
really happy. My current products have to support really tough
business logic, involving interactions with many classes and
components. With every deployment for each customer I have to change
some things here and there, apply some patches or add some business
rules. I really cant imagine how to do all this without the tools and
unit tests I have available in the object world. I would never give up
my beautiful domain objects, unless there's a very good reason.
Hibernate allows me to have real objects and thats the main point.
If you think embedding logic inside databases is good, remember that
normally, data long lives the application, and mixing the neat clean
relational data with everyday changing business logic can be dangerous.