В чем разница между спецификациями JPA и JDO?
Я использую Hibernate ORM, который является реализацией спецификации JPA для управления реляционными данными. Я также слышал о спецификации JDO, которая должна была делать то же самое (управлять реляционными данными).
В чем заключаются фундаментальные различия между этими двумя?. Как JDO интегрируется с другими пакетами технологий Java, например. EJB3?
Ответы
Ответ 1
Попробуйте эти
Вопросы JDO-JPA,
JDO или JPA,
JDO.v. JPA,
JDO.v. JPA - API,
JDO.v. JPA - ORM
JDO существовала задолго до JPA и имеет более широкий охват. JPA предназначена исключительно для РСУБД, и (даже в JPA2) не обеспечивает полную поддержку, предоставляемую JDO. Ссылки и другие сообщения в этом форуме должны содержать достаточное чтение, чтобы объяснить все стороны аргументов.
- Энди (DataNucleus)
Ответ 2
JPA была определена для унификации и замены предыдущих существующих спецификаций сохранения Java EJB CMP и JDO. JPA была выпущена как часть EJB 3.0 и является частью спецификации Java EE, поддерживаемой Oracle WebLogic, IBM Websphere, Redhat JBoss и любым другим поставщиком Java EE.
Есть много ведущих продуктов, поддерживающих JPA (TopLink/EclipseLink, Hibernate, OpenJPA, DataNucleus), но мало кто поддерживает JDO или CMP. Итак, кажется, что JPA неплохо заменила оба.
Что касается JPA только RDBMS, то это полностью ложно (даже DataNucleus - единственный оставшийся JDO-продукт, о котором я знаю, поддерживает JPA на любой нереляционной платформе, поддерживающей JDO).
Существует также множество других продуктов, поддерживающих JPA на нереляционных платформах, таких как поддержка EclipseLink NoSQL и EIS (MongoDB, Oracle NoSQL, XML, устаревшие базы данных), Kundera, DataNucleus и даже объектные базы данных, такие как ObjectDB, которые поддерживают JPA как их API Java.