java google-app-engine grails jpa jdo

Java App Engine: JDO o JPA, ¿cómo elegir?



google-app-engine grails (4)

Por cierto, Grails tiene su persistencia de datos construida sobre Hibernate. ¿Cómo crees que JDO te ayudaría en algo que Hibernate no haría? No veo por qué uno elegiría JDO sobre el valor predeterminado.

En lo que respecta a JPA, le recomendaría que utilice la implementación JPA, Hibernate de JPA, que es útil para Grails, y no para la función específica de Hibernate, a menos que sea convincente.

[No más relevante después de un cambio significativo en la pregunta]

Está perfectamente bien tener operaciones CRUD en su propia entidad. Pero hay casos en los que puede encontrarse operando en múltiples entidades, en ese caso una capa es útil y limpia, en mi humilde opinión. De nuevo, es cuestión de requerimientos.

Pros y contras de elegir JDO o JPA para una aplicación de Grails que se ejecutará en Google App Engine


Si está construyendo para App Engine, el camino es más corto y hay menos contratiempos si usa JDO. De lo contrario, tendrás una capa JPA alrededor de tu motor JDO.


Veo por qué elegirías JDO. No sé cuál es el "valor predeterminado" al que hace referencia otro afiche. JDO es agnóstico de datos. JPA no es. JDO permite buscar grupos. JPA no. JDO permite la identidad del almacén de datos. JPA no. JDO permite transacciones de almacén de datos. JPA no. Todo esto es un registro público http://db.apache.org/jdo/jdo_v_jpa.html

JDO y JPA no ocupan el mismo espacio problemático. Solo se superponen para RDBMS. JPA solo está diseñado para RDBMS. JPA no es más sencillo, como lo demuestra la comparación de API en http://db.apache.org/jdo/jdo_v_jpa_api.html

--Andy (DataNucleus)


[Ya no es relevante después de un cambio significativo en la pregunta]

Echa un vistazo a los siguientes artículos:

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

Parece que realmente depende de la naturaleza de su aplicación y el tamaño de la misma. JPA es más simple, así que me quedaré con eso y trataré de evitar una capa DAO en tu aplicación, siempre que sea una aplicación bastante pequeña y simple.