持久化技术不可知的Java模型:JAXB与eCore 问题

持久化技术不可知的Java模型:JAXB与eCore 问题,java,model,jaxb,persistence,eclipse-emf,Java,Model,Jaxb,Persistence,Eclipse Emf,给定一个特定于技术的Java模型T,我希望: 在我的代码中使用的与技术无关的模型a(即MVC中的M) 一个持久化机制P来存储我的模型a 方法 目前我已经找到了一些选择: 选项1: 手动为一个类创建类 手动创建将T转换为A的代码 手动创建第三个JAXB模型J的XSD 从J生成JAXB模型类 手动创建代码以将A转换为J 使用JAXB自动保存J 加载时,必须手动将所有翻译创建到另一个方向 优势:看不到。这就是我的问题:) 缺点:所有选项中最具发展潜力的 选项2: 手动创建的JAXB模型的XS

给定一个特定于技术的Java模型T,我希望:

  • 在我的代码中使用的与技术无关的模型a(即MVC中的M)
  • 一个持久化机制P来存储我的模型a
方法 目前我已经找到了一些选择:

选项1:

  • 手动为一个类创建类
  • 手动创建将T转换为A的代码
  • 手动创建第三个JAXB模型J的XSD
  • 从J生成JAXB模型类
  • 手动创建代码以将A转换为J
  • 使用JAXB自动保存J
  • 加载时,必须手动将所有翻译创建到另一个方向
  • 优势:看不到。这就是我的问题:)
  • 缺点:所有选项中最具发展潜力的
选项2:

  • 手动创建的JAXB模型的XSD
  • 为一个应用程序生成JAXB模型类
  • 手动创建将T转换为A的代码
  • 使用JAXB自动保存
  • 加载时,必须手动将转换创建到另一个方向
  • 优势:开发工作量低。可以直接持久化
  • 缺点:我读到,使用JAXB类作为modell是个坏主意。但我不明白为什么
选项3:

  • 将的模型手动创建为eCore模型
  • 从ecore模型生成A的类
  • 手动创建将T转换为A的代码
  • 使用eCore资源自动保存
  • 加载时,必须手动将转换创建到另一个方向
  • 优势:开发工作量低。可以直接持久化
  • 缺点:没有
从优点和缺点来看,我认为我应该明确使用eCore而不是JAXB

问题:
  • 使用eCore真的那么清楚吗?或者我也应该考虑一下有哪些优点/缺点
  • 这里有一种更简单的方法可以将特定于技术的模型T转换为不可知技术的模型L A。目前,我必须自己实现A和转换A T。找个简单点的办法就好了

您可以使用JAXB将模型A转换为XML。这利用了JAXB的Java第一个方面,而不是您的问题中的模式。

可能是因为我个人对这两种技术都不了解,但是。。。为什么您需要一个模型在两种不同的技术细节中保持持久性?或者更确切地说,为什么在同一个项目中需要两种持久性技术?我只想使用其中一种技术。eCore或JAXB。但是你帮不上什么忙来决定其中一个。我的问题的哪一部分让您认为我需要这两种技术?您描述的问题有一个语言不可知的描述,并且多次尝试使用语言不可知的解决方案(没有Java和Eclipse)。搜索术语“模型驱动体系结构”和“平台无关模型”(也可能是“对象关系映射器”),以了解在您所考虑的2个框架之外的世界上的一些最佳实践。