DAO可以保存州信息

时间:2013-04-11 11:11:05

标签: java java-ee design-patterns

可能这听起来有点平凡,有人可以告诉我是否有任何好的做法说DAO不应该存储状态信息,即非静态非最终成员变量?我遇到的大部分DAO主要包含静态变量和最终变量。

public class CustomerDAO extends CommonDAO{

private String txnid;
private String txnName;

getters....setters..
}

3 个答案:

答案 0 :(得分:6)

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

所以我会把问题反过来说 - DAO有什么明智的状态?

答案 1 :(得分:2)

强烈反对这一点:DAO存在的全部理由是提供无状态的DB访问方法。大多数阅读代码的开发人员都会对找到任何州感到非常惊讶。

另外,你所说明的状态并不是线程安全的 - 你可以在做这种事情时陷入混乱。

答案 2 :(得分:0)

DAO通常在singleton pattern之后实现 - 这意味着每个实体只有一个DAO实例,因此状态信息将使用DAO在应用程序的所有部分之间共享