Я не знаю много о JPA, но я пошел с JDO, и если вы новичок в этом, я могу сказать, что у него довольно крутая кривая обучения и много посторонних вещей, которые не относятся к GAE , Вы выигрываете принадлежащих отношений, , которые позволяют вам иметь классы с реальными ссылками друг на друга, а не просто с идентификаторами хранилища данных. Есть также несколько полезных вещей, которые JDO делает с помощью аннотаций, таких как аннотация @Element (зависимый = "истина"), которая экономит вам немного времени, поскольку позволяет удалять родительский объект, а JDO удаляет все его дочерние элементы. В общем, документы GAE упускают множество вещей, которые вам необходимо знать, чтобы эффективно использовать JDO, поэтому я бы сказал, что крайне важно прочитать документы datanucleus и уделить особое внимание группам извлечения.
Вы также можете найти большую коллекцию кратких примеров для JDO и JPA, которые рассматривают почти все возможные сценарии здесь.
Наконец, я хотел бы взглянуть на Objectify и Twig, две, по-видимому, популярные альтернативные среды, которые были упомянуты в вопросе, который я задал , когда я также пытался принять это решение.
Что касается переносимости в другие базы данных, я думаю, что беспокоиться о переносимости в GAE немного ошибочно. Как бы Google не хотел, чтобы мы думали, что код GAE является переносимым, я думаю, что это несбыточная мечта. Вы в конечном итоге будете писать код для целевого набора API, который предлагает Google, набора, который вы, вероятно, не увидите больше нигде, а также кодировать вокруг множества ограничений и особенностей GAE, поэтому я бы забыл о переносимости как факторе для решения API доступа к данным. На самом деле, если бы я мог переделать свое решение по этому вопросу, я думаю, что я бы использовал инфраструктуру доступа к данным, созданную специально для GAE, такую как objectify.