我正在使用 Java EE 6 开发 Web 应用程序。为了尽量减少对数据库的调用,使用类是个好主意:
数据访问类 (DAO) 将仅调用基本方法 getAllClients、getAllProducts、getAllOrders、delete、update
方法 - CRUD 方法。
将调用 CRUD 方法的服务类,此外还有过滤器方法,例如findClientByName、findProuctByType、findProductByYear、findOrderFullyPaid/NotPaid
等...将基于基本的 DAO 方法。
谢谢
最佳答案
根据我的经验(虽然有限)DAO
类往往具有允许应用程序执行的所有可能的数据库操作。因此,在您的情况下,它将具有诸如 getAllClients()
之类的方法。和 getClientByName(String name)
等
获取 DAO 中的所有用户并遍历所有用户直到找到所需的用户,这会导致不必要的计算时间浪费和内存消耗。
如果您想减少数据库被访问的次数,您可以实现一些缓存机制。一个ORM框架如 Hibernate应该能够提供您所需要的,如图所示here .
编辑:
根据您的评论问题,不,您的服务不会变得多余。一个人所做的是通常使用 Service
层暴露DAO
功能。这基本上不会生成 DAO
。从应用程序的前端可见。它通常还允许额外的方法,例如 public String getUserFormatted(String userName)
.这将使用 getUserByName
DAO
提供的功能但提供一些额外的功能。
Service
如果规范发生变化,您现在还需要一个 Web 服务来与您的应用程序交互。中间有一个服务层将允许 Web 服务查询 DAO
通过 Service
层。
所以基本上,DAO
层仍将担心数据库内容(CRUD 操作),而服务将调整 DAO
返回的数据。在不暴露 DAO 的情况下。
关于java - DAO和Service层设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649786/