我的应用程序基于典型的三层体系结构,目标是创建一个SpringMVC站点和一个Spring Batch解决方案,用于提供和维护我们的数据库产品和库存,其中速度是一个非常重要的因素。DTO,DAO或服务层?
我使用Spring的JdbcTemplate来管理遗留数据库。我的一些表格包含很多不使用的列,并且由于某些字段(我们甚至不需要映射的斑点)的大小,检索整行已经显示出负面影响,所以我创建了一些与列我想要检索,如:
- 产品 - 包含一个1:与存储在数据库中的字段1的关系。
- ProductDetailsView - 包含ID,名称,价格,描述,库存。
- ProductListItemView - Id,Price,name,stock。
DAO层将这些bean返回到服务层。据我所知创建DTO揭露它在我的服务接口产品可能是有意义的,但是,
1)什么ProductDetailsView和ProductListItemView?
2)我应该从这些'视图'或'投影'到具有相同属性的DTO进行1:1映射吗?为什么?
3)无论如何,你会在哪里放置JSR-303注释来验证网络的输入?
您好,感谢您真正有用的答案,真的很感激它。 在我们使用DAO中检索到的结果作为中间DTO的情况下,我们需要服务层中的特定DTO(假设我们需要在服务层中添加一些计算的字段到实体的这些缩小版本中的一个),我们将在哪里放置以及如何在项目中命名这两种类型的DTO? 一些例子我能想到的现在: 'org.company.project.catalog.model.view.ProductListItemView' 'org.company.project.catalog.dto.ProductListItemDto' 'org.company.project。 common.dto.ProductListItemDto' – Computist
如果你是我,我使用POJO将我需要的服务层(存储计算值)的所有属性+我从数据库中检索的属性,我将完全用它来调用它model.jdbc包中的数据库表的名称。我将发送给视图的DTO使用第一个POJO值来将所需值移动到表示层,并且在此DTO中定义json注释或视图注释,我将把这个DTO放入应用程序模块中的dto文件夹中包 – Koitoer