Я нашел это, чтобы дать хорошее объяснение.
http://elope.wordpress.com/2007/09/06/difference-between-jpa-and-hibernate/
Из вышеприведенного блога:
Так что, если мне нужно выразить в сжатых словах:
a) JPA - это Persistence Api, который должен использовать ваш код.
b) JPA Api передает вызов фактическому провайдеру постоянных прав (например, Hibernate / TopLink) для выполнения фактической работы.
в) Если вы смотрите с точки зрения производительности, это будет зависеть от фактического поставщика постоянных данных (Hibernate / TopLink), а не от JPA, поскольку это просто слой-обертка.
d) Если вы смотрите с точки зрения зависимости кода, JPA имеет больше смысла, поскольку ваш код зависит от стандартного Java Api.
e) Если вы использовали Hibernate, то обнаружите, что в JPA отсутствуют определенные функции, например запросы критериев и т. Д. Это не означает, что вы не можете писать запрос критериев в своем приложении, вам нужно получить объект Session из JPA Менеджер сущностей и теперь вы так же хороши, как и в спящем проекте.
Но теперь ваш код зависит от Specific impl (Hibernate), в дальнейшем вы увидите, как в JPA добавляется больше вещей (2.0)
f) Если вы используете JPA: я полагаю, что вы должны, API чист, и хотя не все, что вам нужно, это их, но это хороший шаг вперед.