我还应该在生产代码中使用JAXB对象的Enums吗?

时间:2015-04-21 05:30:19

标签: java enums jaxb refactoring

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

1 个答案:

答案 0 :(得分:0)

选项包括:

  • 实现单独的实体模型,仅将JAXB模式派生类用作DTO,实现实体 - > DTO转换器。
  • 直接使用模式派生类作为实体模型。

第一个选项更昂贵,但您可以在业务逻辑和外观层之间实现更清晰的分离。

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

在业务逻辑中使用模式派生的枚举(或其他模式派生类)会使您进入第二个选项。如上所述,只要您的业务逻辑完全由模式驱动,这就快速而便宜并且工作得相当好。

但如果您的业务实体有其自己的含义,它就会失败。请考虑以下问题:

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

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