Spring MVC域对象处理最佳实践

Tho*_*ler 5 java model-view-controller spring dao hibernate

让我们假设一个简单的Spring MVC Controller接收域对象的ID.Controller应该调用应该对该域对象执行某些操作的服务.

通过从数据库加载域对象的ID,将域名对象的ID"转换"到哪里?这不应由财务主任完成.因此,服务方法接口必须使用接受ID的的域对象而不是域对象本身.但是如果将域对象作为参数,则服务的接口会更好.

您对此常见用例有何看法?你是如何解决这个问题的?

bpa*_*apa 4

控制器应该将 id 传递到服务层,然后返回呈现 HTTP 响应的其余部分所需的任何内容。

所以 -

Map<String,Object> doGet (@RequestParam("id") int id) {
     return serviceLayer.getStuffByDomainObjectId(id);
}
Run Code Online (Sandbox Code Playgroud)

其他任何事情都会污染网络层,而网络层根本不应该关心持久性。服务层的全部目的是获取领域对象并告诉它们执行业务逻辑。因此,数据库调用应该驻留在服务层中 -

public Map<String,Object> getStuffByDomainObjectId(int id) {
    DomainObject domainObject = dao.getDomainObjectById(id);
    domainObject.businessLogicMethod();
    return domainObject.map();
}
Run Code Online (Sandbox Code Playgroud)