With EJB 2.x entity beans, you are forced to implement certain interfaces and the EJB framework is quite pervasive upon your objects. You can't have "clean" objects and this somewhat limits your design choices when designing your objects. Also, because of this, its quite hard to
test your objets outside of their container.
With Hibernate you do not have this problem as there are no specific interfaces you must implement and you do not have to extend any Hibernate specific classes. You can therefor have a "cleaner" design to your objects and can test them a lot easier as they can be tested both inside
and outside their container.