В гонке между JDO против JPA я могу согласиться только с постерами с датануклеусом.
Прежде всего, а также, самое главное, плакаты datanucleus знают, что они делают. В конце концов, они разрабатывают постоянную библиотеку и знакомы с моделями данных, отличными от реляционных, например, Большой стол. Я уверен, что если бы здесь был разработчик hibernate, он сказал бы: «все наши предположения при создании наших базовых библиотек тесно связаны с реляционной моделью, hibernate не оптимизирован для GAE».
Во-вторых, JPA, несомненно, является более широкое применение, являясь частью официального стека Java EE помогает немного, но это не обязательно означает, что это лучше.
Фактически, JDO, если вы читаете об этом, соответствует более высокому уровню абстракции, чем JPA. JPA тесно связан с моделью данных RDBMS.
С точки зрения программирования, использование API-интерфейсов JDO - намного лучший вариант, потому что вы концептуально компрометируете намного меньше. Теоретически вы можете переключиться на любую модель данных по вашему желанию, если поставщик, которого вы используете, поддерживает базовую базу данных.
(На практике вы редко достигаете такого высокого уровня прозрачности, потому что вы обнаружите, что устанавливаете свои первичные ключи для объекта GAE, и вы будете привязывать себя к конкретному поставщику базы данных, например, Google). миграция все равно будет проще.
В-третьих, вы можете использовать Hibernate, Eclipse Link и даже Spring с GAE. Похоже, что Google приложил большие усилия, чтобы позволить вам использовать фреймворки, на которых вы строили свои приложения. Но то, что люди понимают, когда они создают свои приложения GAE, как если бы они работали на СУБД, это то, что они работают медленно. Весна на GAE МЕДЛЕННАЯ. Вы можете посмотреть видео Google IO по этой теме, чтобы убедиться, что это правда.
Кроме того, придерживаться стандартов - разумная вещь, в принципе, я аплодирую. С другой стороны, JPA, являющаяся частью стека Java EE, иногда заставляет людей терять представление о возможностях.
Поймите, если хотите, что Java Server Faces также является частью стека Java EE. И это невероятно аккуратное решение для разработки веб-интерфейса. Но в конце концов, почему люди, более умные люди, если можно так выразиться, отклоняются от этого стандарта и вместо этого используют GWT?
Во всем этом я должен сказать, что в JPA есть одна очень важная вещь. Это Guice и его удобная поддержка JPA. Похоже, что Google не был таким умным, как обычно, в этом вопросе и доволен, пока что не поддерживает JDO. Я все еще думаю, что они могут себе это позволить, и в конечном итоге Guice также поглотит JDO ... или, возможно, нет.