我们有一个项目,其中 JAXB 对象与生产代码分离。我们在生产代码中创建一个实体(基于 JAXB 对象)。这些 JAXB 对象也会自动生成枚举。我应该怎么办?我是否仍然应该使用这些 JAXB 枚举或在生产代码中创建一个单独的枚举?会不会太贵了?
最佳答案
选项是:
- 实现单独的实体模型,仅使用 JAXB 模式派生类作为 DTO,实现实体 -> DTO 转换器。
- 直接使用架构派生类作为实体模型。
第一个选项更昂贵,但业务逻辑和外观层之间的分离更清晰。
第二种选择更便宜,但你完全是架构驱动的。
在业务逻辑中使用架构派生的枚举(或其他架构派生的类)使您处于第二种选择。如前所述,这既快速又便宜,而且效果相当好 - 只要您的业务逻辑完全由架构驱动。
但是如果你的业务实体有自己的含义,那就失败了。考虑以下问题:
- 如果架构发生更改,会发生什么情况?
- 如果您需要并行支持多个架构版本怎么办?
- 如果您需要支持其他传输 channel 格式而不仅仅是 XML,该怎么办?
- 如果您需要向业务实体添加无法(轻松)自动生成的功能,该怎么办?
业务实体/数据类型和 DTO 之间的清晰分离有很大帮助。上述更改/要求只会影响一层,不会影响业务逻辑或以下层。
关于java - 我是否仍然应该在生产代码中使用 JAXB 对象中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763694/