我已阅读帖子MVC With Lazy Loading,我仍然有一些问题:
如果我们使用第四种选择,哪一部分应该负责转换过程?控制器还是服务?如果我们使用控制器,将@Transactional引入控制器是否合适?
我还看到post建议对不同用法使用不同的查询。为了不同的目的,似乎使用不同的获取组JDO fetchgroup。用这种方式好吗?
感谢。
答案 0 :(得分:0)
在今天这个时代,您可以并且应该将services
公开为REST controllers
并返回正确的域对象,而不是ModelAndView或Spring MVC中的其他此类构造。
更新:澄清:这种方法中没有控制器类我建议。将服务公开为@Controller
。将服务上的公共方法公开为REST,并在方法上注释跨国,授权等上下文。因为从API的角度来看,这个公共接口服务于所有类型的客户端,无论是REST还是直接方法调用。
此外,如果您拥有专用控制器和服务,您可能会立即看到一些业务逻辑渗透到您的控制器中。
我会更进一步,不使用选项4,这实际上导致了DTO反模式。
说过仍然取决于实体的复杂性。一个非常复杂的实体与许多关联将由于它触发的查询而成为一种性能损失。然而,您的MVC(JSP)实际上可以在需要时解析关联。 (在完整REST完整架构的附注中,这是一个问题。)