1

May be this might sound a bit mundane, can someone tell me if there is any good practise which says DAO's should not store state information i.e. non static non final member variables? Most of the DAO's that i have come accross mainly contain only static and final variables.

public class CustomerDAO extends CommonDAO{

private String txnid;
private String txnName;

getters....setters..
}
4

3 回答 3

6

对我来说,DAO 是“只是一个管道”,用于封装数据库通信。它构造和执行查询或/和代理EntityManager,因此至少对于 JPA,除了EntityManager实例之外不需要任何状态。查询不直接相互依赖。

所以我会反过来提出这个问题——DAO 可以拥有什么样的合理状态?

于 2013-04-11T11:16:25.487 回答
2

强烈反对这一点:DAO 存在的全部原因是提供一系列无状态的数据库访问方法。大多数阅读您的代码的开发人员会非常惊讶地发现任何状态。

此外,您所说明的状态不是线程安全的 - 您可能会在做那种事情时陷入困境。

于 2013-04-11T11:19:17.770 回答
0

DAO 通常按照单例模式实现——这意味着每个实体只有一个 DAO 实例,因此状态信息将在使用 DAO 的应用程序的所有部分之间共享

于 2013-04-11T11:21:18.980 回答