我知道这里有很多意见,但对我来说仍然不清楚。
让我们举一个例子,假设我有一个Customer
实体和一个CustomerDTO
。
1)我的save
和get
服务是否应该接受DTO并返回DTO?像:
CustomerDTO saveNew(CustomerDTO dto);
CustomerDTO get(Long id);
2)我的服务是否应始终管理Customer
个对象,我的Controller
进行转换,例如:
Customer saveNew(Customer c);
Customer get(Long id);
我认为第二个更灵活,然后如果在另一个服务中我需要调用客户获取(例如,在User
设置它)我有Customer
本身和我不需要转换它。但似乎第一种方法更加分离?
答案 0 :(得分:1)
一种好的MVC做法是每个视图只有一个控制器,因此我们应该能够轻松交换视图。假设我们有两个控制器为我们的域模型处理两种不同的表示形式(在这种情况下为两种不同的DTO)。这两个控制器应使用相同的服务,因此它们应将相同的对象类型传递给服务,即Customer
。我认为service
是业务逻辑层的一部分,应与域模型一起使用,而controller
是表示层的一部分。要回答您的问题,我同意第二个示例,因为它更尊重MVC模式。
答案 1 :(得分:-2)
不,它不能wotk。如果你想要这些作品,你必须定义它们。 您可以使用存储库默认方法: 为了保存 repo.save(客户); 为了得到 repo.getOne(ID);
您可以使用@Query注释来定义自定义查询。