gpt4 book ai didi

java - 实现 DAO 类的正确方法?

转载 作者:行者123 更新时间:2023-11-30 11:48:25 25 4
gpt4 key购买 nike

我有一些普通的实体类对应于数据库中的表,结构类似于:

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. 您还有什么要指出的吗?
    谢谢。


编辑:找到了我需要的东西 Here ....谢谢@BalusC

最佳答案

这基本上是正确的,只是我不会在 DAO 中使用静态方法。我还会有一个用于 DAO 的接口(interface),以及一个实现该接口(interface)的 DAO 类。

不使用静态方法的一个重要原因是为了可测试性。在某些时候,您需要对调用 DAO 方法的类进行单元测试;为此,您需要模拟 DAO 类。您无法轻松模拟具有大量静态方法的类。

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

关于java - 实现 DAO 类的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8812530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com