Ответ 1
API Java Persistence, внедренный в Java EE 5, является подмножеством EJB 3 и заменяет решение сохранения EJB 2.0 CMP. JPA 1.0 определен как часть спецификации EJB 3.0 (JSR 220), но может использоваться без и вне контейнера EJB. В Java EE 6 у JPA 2.0 есть отдельная спецификация (JSR 317), вне спецификации EJB 3.1 (JSR 318). Итак, подведем итог:
-
JPA является подмножеством EJB 3, а реализации предоставляются поставщиками персистентности, такими как Toplink Essentials/EclipseLink, Hibernate, Kodo/OpenJPA (Kodo - это проект, из которого был получен исходный код OpenJPA, и Kodo теперь, в поворот на основе OpenJPA) и т.д.
-
EJB 3 является более широкой спецификацией, а реализации предоставляются контейнером EJB серверов приложений, которые полагаются на поставщиков непрерывности:
- Поставщик стабильности по умолчанию GlassFish v3 - EclipseLink
- Поставщик JSOS по умолчанию сохраняет Hibernate
- Поставщиком постоянства по умолчанию для WebLogic 10.3.1+ является OpenJPA/Kodo или EclipseLink
- Поставщик постоянной сохранности WebSphere 6.1+ основан (на основе) OpenJPA