java - 我是否仍然应该在生产代码中使用 JAXB 对象中的枚举?

标签 java enums jaxb refactoring

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

最佳答案

选项是:

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

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

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

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

但是如果你的业务实体有自己的含义,那就失败了。考虑以下问题:

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

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

关于java - 我是否仍然应该在生产代码中使用 JAXB 对象中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763694/

相关文章:

java - 使用 JAXB 解码

jaxb - 为什么 JAXBContext 需要特别告知包中已有的类?

java - 使用分离的线程类填充 SWT 表对象

c++ - 避免在字符串中进行 if-else 分支以进行类型调度

c++ - 如何从 C++ 中的枚举类打印出字符串?

PostgreSQL:更改枚举类型的列

java - 如何将 JAXB 对象编码到 org.w3c.dom.Document?

java - Kotlin中如何避免重载冲突?

java - jButton 仅响应第二次单击

java - pathParameters 文档异常(未找到 urlTemplate)