AppEngine Java: JDO ou JPA, comment choisir?

Avantages et inconvénients de choisir JDO ou JPA pour une application Grails s’exécutant sur Google AppEngine

Je vois pourquoi vous choisiriez JDO. Je ne sais pas quelle est la “valeur par défaut” mentionnée par une autre affiche. JDO est agnostique vis-à-vis des datastores. JPA n’est pas. JDO permet de récupérer des groupes. JPA ne le fait pas. JDO permet l’identité du magasin de données. JPA ne le fait pas. JDO autorise les transactions de banque de données. JPA ne le fait pas. Tout cela est public record http://db.apache.org/jdo/jdo_v_jpa.html

JDO et JPA ne remplissent pas le même espace de problèmes. Ils ne se chevauchent que pour le SGBDR. JPA n’est conçu que pour RDBMS.JPA n’est pas plus simple, comme le montre la comparaison d’API disponible à l’ adresse http://db.apache.org/jdo/jdo_v_jpa_api.html.

–Andy (DataNucleus)

Si vous construisez pour AppEngine, la route est plus courte et il y a moins de problème si vous utilisez JDO. Sinon, vous aurez une couche JPA autour de votre moteur JDO.

À propos, la persistance des données de Grails est construite sur Hibernate. Comment pensez-vous que JDO pourrait vous aider dans quelque chose que Hibernate ne fera pas? Je ne vois pas pourquoi on choisirait JDO plutôt que le défaut.

En ce qui concerne JPA, je vous recommanderais d’utiliser JPA, l’implémentation Hibernate de JPA qui est pratique avec Grails, et non l’une des fonctionnalités spécifiques d’Hibernate, sauf indication contraire.

[Plus de pertinence après un changement significatif en question]

C’est parfaitement bien d’avoir des opérations CRUD dans votre entité elle-même. Mais il y a des cas où vous pouvez vous retrouver sur plusieurs entités, dans ce cas une couche est pratique et propre, à mon humble avis. Encore une fois, c’est la question de l’exigence.

[N’est plus pertinent après un changement significatif en question]

Jetez un coup d’œil aux articles suivants:

http://www.infoq.com/news/2007/09/jpa-dao

Cela semble dépendre de la nature de votre application et de sa taille. JPA est plus simple, donc je m’en tiens à cela et essaye d’éviter une couche DAO dans votre application, à condition qu’il s’agisse d’une application relativement petite et simple.