可能这听起来有点平凡,有人可以告诉我是否有任何好的做法说DAO不应该存储状态信息,即非静态非最终成员变量?我遇到的大部分DAO主要包含静态变量和最终变量。
public class CustomerDAO extends CommonDAO{
private String txnid;
private String txnName;
getters....setters..
}
答案 0 :(得分:6)
对我来说,DAO“只是一个管道”,用于封装数据库通信。它构造并执行EntityManager
的查询或/和代理,因此至少对于JPA,除了EntityManager
实例之外,不需要任何状态。查询不直接相互依赖。
所以我会把问题反过来说 - DAO有什么明智的状态?
答案 1 :(得分:2)
强烈反对这一点:DAO存在的全部理由是提供无状态的DB访问方法。大多数阅读代码的开发人员都会对找到任何州感到非常惊讶。
另外,你所说明的状态并不是线程安全的 - 你可以在做这种事情时陷入混乱。
答案 2 :(得分:0)
DAO通常在singleton pattern之后实现 - 这意味着每个实体只有一个DAO实例,因此状态信息将使用DAO在应用程序的所有部分之间共享