JPA - это спецификация API для сохраняющихся объектов. Он определяет язык запросов, подобный SQL, и аннотации для определения сущностей и отношений.
Hibernate - это реализация JPA, которая имеет различные расширения, а также устаревший API и язык запросов. Пока вы не используете какое-либо из расширений Hibernate и придерживаетесь API JPA, вы можете более или менее использовать его взаимозаменяемо с другими реализациями JPA, такими как OpenJPA, TopLink и т.д.