2011-07-20 10 views
11

Me estoy acercando al mundo de Gwt + Gae.¿Por qué Objectify en lugar de JDO?

Mi necesidad esencial es enviar a través del cable Gwt-Rpc mis clases de Entidad, sin duplicarlas en DTOs.

Objectify promete hacer eso bastante bien. Afirma que ocultará toda la "complejidad de Jdo".

Nunca trabajé con las tecnologías Jpa o Jdo. ¿Dónde está toda la complejidad?

Quiero decir, ¿me puede dar algunos ejemplos simples sobre tareas complejas en JDO, hechas triviales por Objectify?

¿Quizás las relaciones?

+1

Tal vez ayudaría si alguien tuviera un proyecto de muestra para explorar (tal vez una tienda de mascotas); pero, realmente, no veo nada en los documentos de Objectify que me haga pensar que sería más fácil en JDO. Entiendo la demanda por eso. Cuando comencé a trabajar en el motor de aplicaciones, inmediatamente deseé que SQL estuviera disponible para poder usar ORM como Hibernate o MyBatis. – Dave

Respuesta

9

Creo que JDO/JPA es fácil de jugar en el nivel "Hola mundo". Pero cambia tan pronto como necesite algo más real, como claves compuestas, relaciones múltiples entre entidades, etc. La implementación de JDO GAE es bastante compleja y difícil de entender para los principiantes, en parte debido a las características no compatibles, las soluciones temporales y las extensiones. JDO está diseñado para funcionar "en todas partes", lo que significa que es muy abstracto y muy general en su naturaleza. Ideal para la portabilidad, pero también significa que puede no ser una combinación perfecta para un motor específico como GAE con su almacén de datos bastante único. Los frascos Datanucleus/JDO/JPA son bastante grandes (~ 2.3 mb en total), mientras que el frasco de Objectify es bastante pequeño. JDO/JPA podría realizar un escaneo de ruta de clase al inicio para buscar y registrar sus entidades, lo que podría aumentar el tiempo de carga. El tiempo invertido sería proporcional al número de clases en su proyecto.

Como por ejemplo que piensan en términos de cantidad de JDO código/APP muestra aparecerá más simple que un montón de clases DAO para Objectify, pero en general, el mantenimiento del código Objectify será más fácil para un ingeniero, porque usted don' Necesito caminar por el campo de minas pensando en lo que puedes romper en JDO :)

+0

¿Puede decirme más sobre "teclas compuestas" y multiplicar relaciones, ...? ¿Qué quieres decir exactamente? ¿Puedes escribir rápidamente un ejemplo? Además, ¿tiene un ObjectO DAO para cada entidad en su proyecto? ¿Cómo puedo explotar el dao genérico de D.Chandler, en tu opinión? http://turbomanage.wordpress.com/2010/02/09/generic-dao-for-objectify-2/ –

1

Un ejemplo de la complejidad de JDO es ver cuántos estados diferentes puede tener una entidad. Como ejemplo de cómo esto puede ser abrumador al principio, desplázate a la parte inferior de this page y mira ese diagrama de estado. Objectify no necesita dicho diagrama de estado.

Otra parte difícil de JDO es toda la "magia" que ocurre detrás de las escenas, lo que a veces dificulta la depuración. Por supuesto, esto no es realmente magia, solo reescritura de código byte, pero eso es bastante complicado.

Finalmente, JDO es una API genérica. Está diseñado para trabajar con almacenes de objetos, bases de datos SQL y quién sabe qué más. La conexión entre un cierto concepto de JDO y lo que realmente estará sucediendo en el almacén de datos a veces es difícil de ver. La API de Objectify está estrechamente alineada con el almacén de datos, lo que facilita la comprensión de lo que está sucediendo.

+2

Entonces, ¿qué son los estados de la entidad en el mundo de Objectify? –

Cuestiones relacionadas