Короткий ответ JPA (Java Persistence API) — это стандарт (спецификация) ORM в Java: он определяет API и набор аннотаций — @Entity, EntityManager, JPQL — но сам по себе реализацией не является. Hibernate — самая популярная реализация этой спецификации: он реализует интерфейсы JPA и добавляет собственные расширения: HQL, тонкую настройку кэша второго уровня и дополнительные возможности. Как это работает подробнее Разница в уровне абстракции: JPA — это правила и интерфейсы, у которых есть несколько реализаций, а Hibernate — одна из них, наиболее функциональная. Если писать код только на стандартном JPA-API, он будет переносимым между ORM-провайдерами; расширенные же возможности доступны через Hibernate. JPA — стандарт: набор правил, интерфейсов и аннотаций; реализации — Hibernate, EclipseLink, OpenJPA. Hibernate — реализация JPA с самым широким набором возможностей и расширений. HQL — собственный язык запросов Hibernate, работающий на высоком уровне абстракции. На практике: в Spring Boot по умолчанию JPA-провайд