В гонке между JDO и JPA я могу согласиться только с плакатами datanucleus.
Прежде всего, а также самое главное, плакаты datanucleus знают, что они делают. В конце концов, они разрабатывают постоянную библиотеку и знакомы с моделями данных, отличными от реляционных, например, Big Table. Я уверен, что id разработчик для спящего режима был здесь, он сказал бы: «все наши предположения при создании наших основных библиотек тесно связаны с реляционной моделью, спящий режим не оптимизирован для GAE».
Во-вторых, JPA, несомненно, пользуется более широким распространением, будучи частью официального стека Java EE, немного помогает, но это не обязательно означает, что он лучше. Фактически, JDO, если вы читаете об этом, соответствует более высокому уровню абстракции, чем JPA. JPA тесно связана с моделью данных СУБД.
С точки зрения программирования использование JDO API - гораздо лучший вариант, потому что концептуально вы гораздо меньше рискуете. Теоретически вы можете переключиться на любую модель данных по вашему желанию при условии, что поставщик, который вы используете, поддерживает базовую базу данных. (На практике вы редко достигаете такого высокого уровня прозрачности, потому что вы обнаружите, что устанавливаете свои первичные ключи для объекта 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, ... а может и нет.