【问题标题】:Should I still use Enums from JAXB Objects in my production code?我还应该在生产代码中使用来自 JAXB 对象的枚举吗?
【发布时间】:2015-04-21 05:30:19
【问题描述】:

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

【问题讨论】:

  • “与生产代码分离”是什么意思?您的意思是,您使用 JAXB 类将 XML 解析为对象结构,然后将这些类映射到您的应用程序模型?
  • 对不起,我猜生产代码是指应用程序代码。

标签: java enums jaxb refactoring


【解决方案1】:

选项有:

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

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

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

在业务逻辑中使用模式派生的枚举(或其他模式派生的类)会将您置于第二个选项中。如前所述,只要您的业务逻辑完全由模式驱动,这既快速又便宜并且效果很好。

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

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

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

【讨论】:

  • 谢谢它澄清了我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-13
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 2021-04-11
  • 2011-12-21
  • 2018-05-30
相关资源
最近更新 更多