tutorial mvc mediante libro framework español ejemplos desarrollo books aplicaciones java xsd eclipse-emf

mvc - spring java tutorial



¿Por qué debería usar EMF? (3)

Si su único interés es la generación de POJO, entonces estoy de acuerdo en que hay muchas alternativas para lograr lo mismo que puede hacer con EMF.

Sin embargo, la generación de Java fue solo la primera aplicación de EMF. Ahora hay una gran cantidad de plug-ins Eclipse basados ​​en EMF que le brindan de forma gratuita muchas funcionalidades para manipular (consultar, validar, transformar, ...) sus modelos EMF.

Consulte el Proyecto de modelado de Eclipse para obtener una lista de los proyectos oficiales de Eclipse en EMF.

Además, eche un vistazo a Acceleo para ver la flexibilidad de su enfoque de generación basado en plantillas de los modelos EMF (para Java, PHP, ...).

He leído algunos tutoriales sobre CEM y todavía me pregunto por qué debería usarlo.

Hasta ahora, estaba generando mis POJO desde el esquema XSD + JXC , o manualmente.

Por lo que yo entiendo EMF, puede ser útil definir algunas relaciones complejas entre las clases (uno a muchos, etc.). ¿Pero eso es todo? ¿No es más complicado generar el código con EMF? ¿No agrega algunas dependencias adicionales?


Agregando a lo que Jordi dijo EMF proporciona un mecanismo de notificación que, a diferencia de XML Beans, por ejemplo, le permite agregar oyentes a los cambios del modelo. Entonces, cuando ocurren cambios en el modelo, recibe una notificación sobre este cambio.

He utilizado con éxito EMF Query para buscar modelos usando sintaxis similar a SQL y usando OCL. La validación de EMF es un gran marco para validar su modelo en función de lo que se define en el esquema, así como la introducción de su propia lógica de validación si no se puede expresar en el esquema.


En términos generales, se podría decir que el uso de fem proporciona varios beneficios en tiempo de ejecución.

En una primera etapa, notará que las clases ecore (y el tiempo de ejecución de fem) ofrecen lo que puede necesitar de sus POJO en su aplicación. No se necesita codificación adicional en muchas áreas, mientras que necesitaría codificar mucho a mano cuando se usan POJO planos:

  • Obtienes un sistema de notificación completo (ya no hay codificación PropertyChange). Incluso ofrece notificaciones de cambios que ocurren más abajo en su árbol de instancias (adjuntar listener a x, recibir notificaciones de cambios en y a los que se hace referencia x).
  • los valores no son configurables (de hecho, una necesidad muy común: necesita conocer 3 estados de un valor: está configurado, está configurado como nulo o no fue tocado).
  • referencias bidireccionales: X hace referencia a Y y viceversa. Elimine la referencia a Y en X, también se elimina la referencia opuesta.
  • Soporte de serialización XML, XMI (etc.) listo para usar.
  • Carga diferida: puede dividir su modelo y tener ciertas piezas cargándose solo de forma lenta.
  • etc.

Las extensiones de CEM incluso ofrecen mucho más:

  • EMF Query o EMF Path agregan capacidades avanzadas de consulta para recopilar instancias de pojo para determinados criterios
  • CDO le permite codificar aplicaciones de 3 niveles sin ninguna codificación manual adicional. CDO agrega persistencia de la base de datos y notificaciones remotas (sesiones, transacciones, control de versiones, bifurcaciones, etc.)
  • Xtext agrega serialización a DSL personalizados (defina su propio formato / dialecto de serialización)
  • etc.

En realidad, podría argumentar que EMF / Ecore ofrece un estándar para POJO y todo un ecosistema creció a su alrededor que en realidad ofrece lo que codificaría a mano en un enfoque clásico.

Para ser honesto, la desventaja de EMF es que te vinculas al tiempo de ejecución de Ecore, lo cual es muy bueno si codificas clientes ricos basados ​​en Eclipse, pero puede convertirse en un problema si estás en el servidor.