Разница между JPA и JDO? - PullRequest
       12

Разница между JPA и JDO?

17 голосов
/ 12 февраля 2010

хочу разработать свой проект на Google App Engine. Я хочу использовать Google Big Table в качестве базы данных. Для базы данных у меня есть два варианта JPA и JDO. Ребята, пожалуйста, предложите мне это? Оба для меня новы, и мне нужно учить их. Поэтому я сосредоточусь на одном после ваших ответов.

Ответы [ 5 ]

10 голосов
/ 12 февраля 2010

Поскольку вы используете Data Nucleus, посмотрите их часто задаваемые вопросы по JDO против JPA. http://www.datanucleus.org/products/accessplatform_3_0/jdo_jpa_faq.html

DataNucleus AccessPlatform поддерживает спецификации JDO и JPA о сохраняемости Java. Как таковая, она не имеет "личной заинтересованности" ни в одной из технологий, полагая, что именно пользователи должны выбирать, что им больше нравится. В Интернете было много FUD о JDO и JPA, в основном разработчиками RDBMS. Этот FAQ исправляет многие из этих пунктов

3 голосов
/ 14 марта 2013

Поскольку GAE BigTable не является RDBMS, JDO - лучший выбор. В Aphache JDO есть несколько подробных статей для сравнения, это полезно для меня.

3 голосов
/ 03 ноября 2012

Ключевым отличием является то, что JDO поддерживает модель расширенного домена (логика вместе с данными), фактически все постоянные классы могут иметь ссылку на текущий PersistenceManager, выпускать запросы, и, я полагаю, возможно не иметь постоянных полей по умолчанию.

JPA не поддерживает такой дизайн программного обеспечения. На самом деле каждая сущность не имеет ссылки на PersistenceManager, чтобы иметь ее, нужно прибегнуть к переменным ThreadLocal, что не очень элегантное и надежное решение.

1 голос
/ 28 апреля 2017

JPA сохраняет объекты Java в реляционных данных через ORM, в то время как JDO является более общей спецификацией для устойчивости объектов Java. Таким образом, использование JDO даст вам больше свободы в вариантах реализации хранилища для ваших объектов.

1 голос
/ 12 февраля 2010

JPA является ведущим стандартом Java для постоянства. Поэтому я скажу использовать JPA, если вы используете RDBMS и вам требуется ORM.
Hibernate обычно используется как реализация JPA. Если вам нужны некоторые дополнительные функции, вы можете использовать спящие аннотации.

Этот вопрос уже выглядит для обсуждения здесь JDO против JPA для Java в Google App Engine

...