В общем, два понятия одинаковы. Модель предметной области используется для описания модели ваших объектов с точки зрения предметной области (т. Е. Информации, используемой для решения конкретной проблемы или набора проблем), а модель сущностей используется для описания модели ваших объектов с точка зрения системы действующих лиц (во многих случаях это приложение, которое использует модель для решения проблем и действует на сущности).
Итак, в общем, это одно и то же.
Тем не менее, Hibernate является очень гибким и, в общем, не требует, чтобы вы многое делали со структурой своих постоянных объектов. Ключ все в том, как вы определяете сопоставления. В любом случае, я бы не предложил бы иметь DTO, чтобы справиться с сохранением данных. Hibernate делает все это внутренне, используя прокси ... это его работа. Добавление большего количества классов только увеличивает сложность вашего приложения и не дает особых преимуществ. Большая сложность почти никогда хорошая вещь.
С Hibernate у вас могут быть частные сеттеры или Hibernate работает только с полями и полностью игнорирует геттеры / сеттеры. В первом случае вы все еще вводите сеттер, но он является закрытым и поэтому не влияет на публичный API класса. При доступе к полю Hibernate не нуждается в любом получателе или установщике для свойства, но он также обходит любую логику, с которой вам, возможно, приходилось делать другие вещи, такие как set transient (непостоянный) ) свойства на ваших объектах.
Прочтите руководство по Hibernate, особенно в разделе о отображении. Это действительно гибкий ORM, который не ограничивает вас больше, чем нужно.