"Every single element in a relation (aka table) has to be
exactly the same type- no superclasses, no variant types."<p>Hibernate offers several ways to deal with subclassing. It is also not just dumping objects in the database, like the person in the discussion does, it is mapping the objects to database tables.<p>True, there may be things databases are not good at (recursion), but overall, in my experience the mapping from objects to database works really well and feels quite natural.