实现DAO类的正确方法?

时间:2012-01-11 00:24:46

标签: java entity dao

我有许多与数据库中的表对应的普通实体类,其结构类似于:

package project.src.entities;
public class ClassName{
/** variables */
private type var1;
private type var2;
/** ...variable ends */
/** Default constructor */
public ClassName(){
}
/** Custom constructor */
public ClassName(type var1, type var2 /*, ... */){
this.var1 = var1;
..
}
/** follows getters and setters of all fields */
}


现在我创建了一个新包:

package project.src.dao;

此包将包含通过JDBC与数据库交互的所有方法。 如:

public class ClassNameDAO {
  /** @return an object of ClassName of given id */
  public static ClassName getClassName(String id){
  . . .
  return className;
  }
  /** @return an ArrayList<ClassName> of objects of ClassName */
  public static ArrayList<ClassName> getAllClassName(){
  . . .
  return classNameList;
  }
  /* Similarly, methods add(ClassName className), update(id, newClassName) and delete(id) follows */
}

现在我的问题是:

  1. 这是在swing应用程序中实现的正确方法吗?
  2. 建议一个更好的实施DAO的方法,欢迎这些例子吗?
  3. 我可以在DAO中使用所有static方法吗?有什么问题吗?如果是,那为什么呢?
  4. 你想指出什么额外的东西?
    感谢。

  5. 编辑: 找到我需要的Here ....谢谢@BalusC

1 个答案:

答案 0 :(得分:1)

这基本上是正确的,除了我不会在DAO中使用静态方法。我还有一个DAO接口和一个实现接口的DAO类。

不使用静态方法的一个重要原因是可测试性。在某些时候,你需要对调用DAO方法的类进行单元测试;为此,你需要模拟DAO类。你不能轻易地模拟有很多静态方法的类。

将来,您可能希望为某些DAO方法提供不同的实现。例如,您可能希望拥有一些特定于特定数据库实现的SQL(例如Oracle提示),或者您可能希望将数据写入文件系统或Web服务。如果您使用一个DAO接口和许多实现它的DAO类,那么在一个应用程序中使用多个实现会更容易。