java - 在 Java SE 中使用 DAO 有什么改进?

标签 java testing dao

我的项目经理要我使用 DAO/DTO 对象来访问和检索数据库中的数据。项目是用 Java SE 编写的,没有使用任何框架或 ORM。他的论点是使代码更易于测试并改进代码设计。有道理吗?

如何初始化 DAO 对象?是否应在创建具有 DAO 字段的类的实例时初始化:

private PersonDao personDao = new PersonDaoImpl();

或者更确切地说是在必要时初始化?

public class A {
  private PersonDao person;

  public List<Person> findAll() {
    person = new PersonDaoImpl();
    return person.getAll();
  }
}

它允许很容易地模拟这个接口(interface),但是它是否符合 DAO 模式的使用约定?

最佳答案

数据访问对象基本上是一个对象或接口(interface),提供对底层数据库或任何其他持久性存储的访问。

该定义来自:http://en.wikipedia.org/wiki/Data_access_object

也许一个简单的例子可以帮助你理解这个概念:

假设我们有一个代表员工的实体:

public class Employee {
private int id;
private String name;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
}

员工实体将保存到数据库中相应的员工表中。一个简单的 DAO 接口(interface)来处理运算符(operator)工实体所需的数据库操作,如下所示:

interface EmployeeDAO {
List<Employee> findAll();
List<Employee> findById();
List<Employee> findByName();
boolean insertEmployee(Employee employee);
boolean updateEmployee(Employee employee);
boolean deleteEmployee(Employee employee);
}

接下来我们必须为该接口(interface)提供一个具体的实现来处理 SQL 服务器,另一个接口(interface)来处理平面文件等...

希望对你有帮助

关于java - 在 Java SE 中使用 DAO 有什么改进?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28894999/

相关文章:

java - ElementCollection/MappedSuperclass/AssociationOverride 的问题

java - 按整数或 boolean 值过滤的数据库性能?

java - 数据库连接失败时如何重定向到错误页面?

java - 如何使用 Apache Shiro 将哈希 pws 存储到数据库中?

二维区间树的Java实现

java - 在Java中执行linux终端命令,涉及写入日志文件,但没有权限?

testing - 是否可以在没有 db :create and db:migrate? 的情况下在 rails 中运行测试

android - 如何将测试数据文件放在设备上进行仪器测试?

spring - 如何在 Spring 3.0.x 中正确测试@Async 邮件程序?

Java,对象列表,循环更改值