Java 在我的生产代码中,我应该仍然使用来自JAXB对象的枚举吗?

Java 在我的生产代码中,我应该仍然使用来自JAXB对象的枚举吗?,java,enums,jaxb,refactoring,Java,Enums,Jaxb,Refactoring,我们有一个项目,其中JAXB对象与生产代码分离。我们在生产代码中创建了一个实体(基于JAXB对象)。这些JAXB对象也会自动生成枚举。我该怎么办?我应该仍然使用这些JAXB枚举还是在生产代码中创建一个单独的枚举?是否也会太贵?选项包括: 实现一个单独的实体模型,仅将JAXB模式派生类用作DTO,实现实体->DTO转换器 直接使用模式派生类作为实体模型 第一个选项的成本更高,但是您在业务逻辑和外观层之间有了更清晰的分离 第二种选择更便宜,但完全是模式驱动的 在业务逻辑中使用模式派生的枚举(或其

我们有一个项目,其中JAXB对象与生产代码分离。我们在生产代码中创建了一个实体(基于JAXB对象)。这些JAXB对象也会自动生成枚举。我该怎么办?我应该仍然使用这些JAXB枚举还是在生产代码中创建一个单独的枚举?是否也会太贵?

选项包括:

  • 实现一个单独的实体模型,仅将JAXB模式派生类用作DTO,实现实体->DTO转换器
  • 直接使用模式派生类作为实体模型
第一个选项的成本更高,但是您在业务逻辑和外观层之间有了更清晰的分离

第二种选择更便宜,但完全是模式驱动的

在业务逻辑中使用模式派生的枚举(或其他模式派生的类)将您置于第二个选项中。如前所述,只要您的业务逻辑是完全由模式驱动的,这是一种快速、廉价且运行良好的方法

但如果你的商业实体有自己的意义,它就失败了。考虑以下问题:

  • 如果模式将被更改,会发生什么情况
  • 如果需要并行支持多个模式版本,该怎么办
  • 如果您需要支持其他传输通道格式,而不仅仅是XML,该怎么办
  • 如果您需要向业务实体添加无法(轻松)自动生成的功能,该怎么办

业务实体/数据类型和DTO之间的清晰分离非常有帮助。上述变更/需求只会影响一个层面,而不会影响业务逻辑或以下层面。

您所说的“与生产代码分离”是什么意思?您的意思是,您使用JAXB类将XML解析为对象结构,然后将这些类映射到您的应用程序模型吗?对不起,我猜生产代码意味着应用程序代码。谢谢,它澄清了我的问题