我读过sometutorials约EMF我仍然想知道为什么我应该使用它。我为什么要使用EMF?
到现在为止,我从XSD架构+ JXC或手动生成POJO。
就我所了解的EMF而言,定义类之间的一些复杂关系(一对多等)会很有用。但是,这一切?用EMF生成代码不是更复杂吗?它不是增加了一些额外的依赖吗?
我读过sometutorials约EMF我仍然想知道为什么我应该使用它。我为什么要使用EMF?
到现在为止,我从XSD架构+ JXC或手动生成POJO。
就我所了解的EMF而言,定义类之间的一些复杂关系(一对多等)会很有用。但是,这一切?用EMF生成代码不是更复杂吗?它不是增加了一些额外的依赖吗?
如果你唯一的兴趣是POJO的产生,那么我同意有许多选择可以实现与EMF一样的功能。
但是,Java代是EMF的第一个应用程序。现在有大量基于EMF的Eclipse插件可以免费提供很多功能来操作(查询,验证,转换......)您的EMF模型。
请参阅Eclipse Modeling Project以获取EMF官方Eclipse项目的列表。
此外,请看Acceleo以查看EMF模型(适用于Java,PHP,...)的基于模板的生成方法的灵活性。
添加到Jordi说的EMF提供的通知机制与XML Beans不同,例如,允许您将监听器添加到模型更改。因此,当模型发生变化时,您会收到有关此更改的通知。
我已经成功地使用EMF查询搜索使用类似SQL的语法的模型,并使用OCL。 EMF验证是一个很好的框架,用于基于模式中定义的内容来验证模型,并且在模式中无法表示自己的验证逻辑。
一般而言,可以说使用emf在运行时提供了几个好处。
在第一个阶段,您会注意到ecore类(和emf运行时)为您的应用程序中的POJO提供了您可能需要的内容。在很多领域没有进一步的编码需要,而在使用普通POJO时需要手工编码:
扩展到EMF甚至提供更:
你可以实际上认为EMF/Ecore为POJO提供了一个标准,整个生态系统都围绕它进行了扩展,实际上它提供了您将用传统方法手工编写的代码。
说实话,EMF的缺点是,如果您编写基于Eclipse的胖客户端,但您可能会成为一个问题,如果您在服务器上,那么您将被绑定到Ecore运行时非常好。
应该指出的是,EMF可以单独使用,即使在纯粹的基于OSGi的应用程序中没有在Equinox中运行。你只需要3个包:org.eclipse.emf.ecore,org.eclipse.emf.ecore.xmi和org.eclipse.emf.common – 2014-11-12 14:22:01