Let\'s say, I have decided to go with Java EE stack for my enterprise application.
Now, for domain modelling (or: for designing the M of MVC), which APIs can I safely a
Your domain model and its persistence layer should in theory be separate - there's no need for a class called Entity
to know anything about if and how it is persisted, so you could use something like Hibernate to create the persistence layer without polluting the domain model classes themselves. You don't "code the [...] model against this layer" - you code the model, then map it to a persistent store with some sort of ORM layer, where the domain model does not depend on the ORM layer. Obviously the persistence layer will depend on the domain model, but that's fine.
I personally fight shy of using too much HQL with (N)Hibernate for the reason you ask, but there are times where it is unavoidable. You already know, and have yourself highlighted, the main issue there, so you are unlikely to overuse this anyway.