Ответ 1
Вы должны предпочесть стандартный API JPA через собственный Hibernate по нескольким причинам:
- Это заставляет вас узнать что-то, что вы можете использовать в других проектах, опираясь на другую реализацию.
- API JPA чище, чем Hibernate: он не имеет ранних ошибок, которые API-интерфейс Hibernate имеет
- Усилия и эволюции теперь нацелены на API JPA. Например, стандартный API критериев JPA2 более совершенен, чем старый, собственный API-интерфейс Hibernate Criteria (но более сложный в использовании, IMHO).
- Если вы хотите, вы всегда можете получить сеанс Hibernate из JPA EntityManager. Не наоборот
В любом случае, большая часть усилий заключается в сопоставлении самих объектов, и это делается с использованием стандартных аннотаций JPA, даже при использовании Session API.