Ответ 1
JPA - это стандарт для доступа к реляционным базам данных через объектно-ориентированный API. Hibernate - это реализация этого API. Если вы хотите использовать JPA, вам нужен какой-то поставщик для его реализации, Hibernate - хороший выбор, но есть другие, такие как EclipseLink.
Спящий режим существует дольше, чем JPA. Нативный, более старый API (который был моделью для JPA) все еще существует, и иногда он предлагает больше возможностей, чем подвергается через JPA (например, удаление сирот). Если вам нужны те, вам нужно использовать собственный API. Использование JPA имеет другие достоинства, наиболее важные (на мой взгляд) больше разработчиков, которые это знают. И вы по-прежнему можете использовать некоторые особенности Hibernate через конфигурацию.
В целом, IMO платит за использование стандартного API, здесь JPA, и принимает опытные решения по реализации.
Большинство учебников, которые используют Hibernate изначально, довольно старые - как и Hibernate 3, релиз до JPA. Хотя есть веские причины использовать его, они (ИМО) обычно не относятся к общей аудитории. Поэтому, если вы только начинаете учиться в этой области, я бы предложил начать с JPA.
Что касается рекомендаций по внешним ресурсам: по уважительным причинам они здесь не по теме. Но текущая официальная документация Hibernate будет хорошим началом, так же как и поиск тотального по крайней мере для Hibernate 4.