2010-02-12 73 views
14

quiero desarrollar mi proyecto en Google App Engine. Quiero usar google big table como base de datos. Para la base de datos tengo dos opciones, JPA y JDO. ¿Podrían por favor sugerirme en eso? Ambos son nuevos para mí y necesito aprenderlos. Así que me concentraré en uno después de sus respuestas.Diferencia entre JPA y JDO?

Respuesta

9

Dado que está utilizando datos de Nucleus, ver sus preguntas más frecuentes sobre JDO vs APP. http://www.datanucleus.org/products/accessplatform_2_1/jdo_jpa_faq.html

DataNucleus AccessPlatform admite las especificaciones JDO y JPA de la persistencia de Java. Como tal, no tiene "intereses creados" en ninguna de las tecnologías, ya que cree que los usuarios deben elegir cuál les gusta más. Ha habido mucho FUD en la web sobre JDO y JPA, en gran parte perpetrado por vendedores de RDBMS. Este FAQ corrige muchos de estos puntos

+0

El enlace está muerto nuevamente. –

0

JPA es el estándar java líder para la persistencia. Así que diré usar JPA si está utilizando RDBMS y requiere ORM.
Hibernate se usa generalmente como implementación de JPA. Si necesita algunas características adicionales, puede utilizar anotaciones específicas de hibernación.

Esta pregunta ya se ve que se discutirán aquí JDO vs JPA for Java on Google App Engine

+0

Pero quiero utilizar el almacén de datos de Google (tabla grande) usando Data Nucleus. Más de lo que sigo JPA o JDO – user246160

+2

Hibernate puede ser "generalmente utilizado como una implementación JPA" pero funciona solo para RDBMS, y consecuentemente no funciona en GAE/J. Según los documentos para GAE/J, JDO es el que más se aproxima a ese almacén de datos, aunque si los modelos de persistencia son simples y los requisitos de consulta también son simples, JPA se puede usar igualmente. Con JDO o JPA, el usuario deberá usar DataNucleus – DataNucleus

2

Una diferencia clave es que JDO apoyar un modelo de dominio rico (lógica junto con los datos), de hecho todas las clases persistentes puede tener una referencia a la corriente PersistenceManager, realizar consultas, y, Supongo que es posible no tener campos persistentes por defecto.

JPA no es compatible con dicho diseño de software. De hecho, cada Entidad no tiene una referencia al PersistenceManager, para tenerlo debes recurrir a las variables ThreadLocal, que no es una solución muy elegante y robusta.

2

Dado que GAE BigTable no es un RDBMS, JDO es una mejor opción. Hay algunos artículos de comparación detallada en Aphache JDO, es útil para mí.

1

JPA persiste objetos java a datos relacionales a través de ORM, mientras que JDO es una especificación más general para la persistencia de objetos java. Entonces, usar JDO le dará más libertad en las opciones de implementación de almacenamiento para sus objetos.