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



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

选项包括:

  • 实现一个单独的实体模型,只使用JAXB模式派生的类作为DTO,实现entity->DTO转换器
  • 直接使用架构派生类作为实体模型

第一个选项更昂贵,但在业务逻辑和门面层之间有一个更干净的分离。

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

在业务逻辑中使用模式派生的枚举(或其他模式派生的类)将使您处于第二种选择中。如前所述,只要您的业务逻辑完全是模式驱动的,这既快速又便宜,而且效果相当好。

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

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

业务实体/数据类型和DTO之间的干净分离有很大帮助。上面描述的更改/需求只会影响一层,而不会影响业务逻辑或以下。

最新更新