我目前正在开展此次讨论的项目,我想问别人他们对此有何看法。
DAO模式是(根据维基百科):“在计算机软件中,数据访问对象(DAO)是一个为某种类型的数据库或持久性机制提供抽象接口的对象,提供一些特定的操作而不暴露细节数据库。“。
但是,使用ORM这显然是一个ORM(例如Hibernate)工作。它为一些(几乎任何)类型的数据库提供了一个抽象接口。
回顾几个最后的项目让我们看看DAO层。第一步是使用save(),findById(),findAll()方法的泛型hibernate dao。这对我来说只是代理hibernate会话方法。
更进一步,我看到像这里提出的这样的接口:Generic DAO pattern in Hibernate,将DAO完全紧密地绑定到hibernate做持久性的方式(合并,条件查询)。这个DAO不能用于其他持久性机制而不是Hibernate。
所以最后的问题是一个问题:对于这种常见的DAO设计,新的DAO模式是什么?如果我想切换数据库引擎,我会在休眠级别上切换它。那么,目前在ORM应用程序中使用DAO模式真的有什么好处吗?
让我们收集一些经验:
请与经验分享。
答案 0 :(得分:2)
我通常不希望每个域对象都有DAO,而是每组功能用例都有DAO。实际上,我发现在足够复杂的应用程序中,大多数查询都没有链接到特定的域对象,而是链接到用例或一组用例。但YMMV,并结合两种方法有时是有用的。
所以,回答你的具体问题: