java - 为什么要使用 EMF?

标签 java xsd eclipse-emf

我读过 some tutorials关于EMF我仍然想知道为什么我应该使用它。

直到现在,我都是从 XSD 架构 + JXC 生成我的 POJO ,或手动。

就我对 EMF 的理解而言,定义类之间的一些复杂关系(一对多等)可能很有用。但这就是全部吗?用 EMF 生成代码不是更复杂吗?它不会添加一些额外的依赖项吗?

最佳答案

一般来说,可以说使用 emf 在运行时提供了几个好处。

在第一阶段,您会注意到 ecore 类(和 emf 运行时)提供了您应用程序中 POJO 可能需要的内容。在很多领域不需要进一步编码,而在使用普通 POJO 时您需要手动编码很多:

  • 您将获得一个完整的通知系统(不再需要 PropertyChange 编码)。它甚至会为您的实例树中更下方发生的更改提供通知(将监听器附加到 x,获取 x 引用的 y 中更改的通知)。
  • 值是不可设置的(实际上是一个非常普遍的需求:您需要了解一个值的 3 种状态:已设置、已设置为 null 或未被触及)。
  • 双向引用:X 引用 Y,反之亦然。删除 X 中对 Y 的引用,相反的引用也被删除。
  • 开箱即用的 XML、XMI(等)序列化支持。
  • 延迟加载:您可以对模型进行分区,让某些部分只延迟加载。
  • 等等

EMF 的扩展甚至提供更多:

  • EMF 查询或 EMF 路径添加高级查询功能以收集符合给定条件的 pojo 实例
  • CDO 允许您编写 3 层应用程序代码,而无需任何进一步的手动编码。 CDO 添加数据库持久性和远程通知( session 、事务、版本控制、分支等)
  • Xtext 将序列化添加到自定义 DSL(定义您自己的序列化格式/方言)
  • 等等

您实际上可以争辩说 EMF/Ecore 为 POJO 提供了一个标准,并且围绕它发展的整个生态系统实际上提供了您可以用经典方法手工编写的代码。

老实说,EMF 的缺点是您会绑定(bind)到 Ecore 运行时,如果您编写基于 Eclipse 的富客户端,这很好,但如果您在服务器上,则可能会成为问题。

关于java - 为什么要使用 EMF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5516906/

相关文章:

java - 使用 FileInputStream 输入文件无法正常工作

c# - xsd2code - 反序列化 xml 文件时出现问题

java - 架构更改后重新生成 ecore

eclipse - XText 以编程方式将 DSL 脚本解析为 Ecore 模型

java - Java中静态 block 的线程安全

java - Vaadin 组合框 - 新元素

java - 将数字转换为整数?发现不兼容的类型 : void required: int

java - 使用扩展现有类文件的 intellij(JAXB 插件)从 XSD 生成 java 类

java - WSDL xsd :choice to java?

java - 为什么使用工厂而不是 'new' ?