Вы можете придерживаться чистой спецификации JPA, на тот случай, если вы захотите поменять Hibernate, но в какой-то момент вы, вероятно, обнаружите, что вы никогда не поменяетесь с ней, и вам не хватает на все действительно отличные особенности Hibernate.
Я бы рекомендовал использовать Hibernate напрямую, и, как предлагает Дамо, аннотации вместо XML. Убедитесь, что у вас есть четкое понимание "магии", которую приносит Hibernate. Если вы не будете осторожны, вы действительно можете уничтожить базу данных. Например, существует проблема с n + 1 запросом в зависимости от того, как вы выполняете @OneToOne объединений:
Автоматическая выборка Hibernate OneToOne (решение проблемы n + 1)
Я бы также рекомендовал использовать встроенную базу данных для модульных / интеграционных тестов в ваших запросах Hibernate и следить за генерируемым SQL-кодом, чтобы убедиться, что он выглядит так, как будто вы пишете вручную.