我有许多与数据库中的表对应的普通实体类,其结构类似于:
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 */
}
现在我的问题是:
static
方法吗?有什么问题吗?如果是,那为什么呢?
编辑:
找到我需要的Here ....谢谢@BalusC
答案 0 :(得分:1)
这基本上是正确的,除了我不会在DAO中使用静态方法。我还有一个DAO接口和一个实现接口的DAO类。
不使用静态方法的一个重要原因是可测试性。在某些时候,你需要对调用DAO方法的类进行单元测试;为此,你需要模拟DAO类。你不能轻易地模拟有很多静态方法的类。
将来,您可能希望为某些DAO方法提供不同的实现。例如,您可能希望拥有一些特定于特定数据库实现的SQL(例如Oracle提示),或者您可能希望将数据写入文件系统或Web服务。如果您使用一个DAO接口和许多实现它的DAO类,那么在一个应用程序中使用多个实现会更容易。