小智 5

DTO的主要动机是呈现针对另一层(通常是表示层)定制的界面.例如,数据输入屏幕可能需要来自用户对象的一些数据位以及来自订单的一些位等.在这种情况下,域到DTO应该发生在表示层调用的层上,即通常一个"服务"层.

Dozer这样的库可以自动完成域模型和DTO之间转换的繁重工作.

关键的一点是,DTO旨在从更丰富的域模型对象中抽象出数据(而不是业务逻辑) - 因此,应尽可能早地将DTO转换回域对象(在服务层),以便应用层的其余部分可以使用更丰富的域对象(数据和业务逻辑)