У змаганні між JDO та JPA я можу погодитись лише з плакатами ядерних даних.
Перш за все, а також найголовніше, плакати datanucleus знають, що вони роблять. Зрештою, вони розробляють стійку бібліотеку і знайомі з іншими моделями даних, крім реляційних, наприклад, "Велика таблиця". Я впевнений, що тут був розробник hibernate, він сказав би: "всі наші припущення при побудові наших основних бібліотек тісно пов'язані з реляційною моделлю, сплячий режим не оптимізований для GAE".
По-друге, JPA, безперечно, широко використовується, оскільки частина офіційного стеку Java EE трохи допомагає, але це не обов'язково означає, що він кращий. Насправді, якщо ви про це читаєте, JDO відповідає вищому рівню абстракції, ніж JPA. JPA тісно пов'язана з моделлю даних RDBMS.
З точки зору програмування, використання JDO API є набагато кращим варіантом, оскільки ви концептуально компрометуєте набагато менше. Ви можете теоретично перейти на будь-яку модель даних за вашим бажанням, за умови, що постачальник, який ви використовуєте, підтримує базову базу даних. (На практиці ви рідко досягаєте такого високого рівня прозорості, оскільки ви виявите, що встановлюєте свої первинні ключі на об'єкті GAE, і будете прив'язуватись до певного постачальника баз даних, наприклад, google). все одно буде легше мігрувати.
По-третє, ви можете використовувати Hibernate, Eclipse Link і навіть пружину з GAE. Здається, Google доклав великих зусиль, щоб дозволити вам використовувати основи, на яких ви звикли будувати свої програми. Але те, що люди розуміють, коли будують свої програми GAE так, ніби вони працюють на СУБД, - це те, що вони повільні. Весна на GAE ПОВІЛЬНА. Ви можете погуглити відео Google IO на цю тему, щоб переконатися, що це правда.
Крім того, дотримання стандартів є хорошою розумною справою, в принципі я аплодую. З іншого боку, JPA, яка є частиною стеку Java EE, зрідка змушує людей втрачати уявлення про варіанти. Зрозумійте, якщо хочете, що Java Server Faces також є частиною стеку Java EE. І це неймовірно охайне рішення для розробки веб-графічного інтерфейсу. Але врешті-решт, чому люди, розумніші, якщо можна так сказати, відхиляються від цього стандарту і замість цього використовують GWT?
У всьому цьому я повинен запевнити, що для JPA існує одна дуже важлива річ. Це Guice та його зручна підтримка для JPA. Здається, що Google не був таким розумним, як зазвичай, у цьому пункті, і зараз він задоволений тим, що не підтримує JDO. Я все ще думаю, що вони можуть собі це дозволити, і врешті-решт Guice також поглине JDO, ... а може, ні.