DAO模式代码阅读及应用
//StudenDaoListImpl.java
package stumanagement; import java.util.ArrayList; import java.util.List; public class StudenDaoListImpl implements StudentDao { private List<Student> students = new ArrayList<Student>(); @Override public Student getStuByName(String name) { Student temp = null; for(Student e:students){ if(e.getName().equals(name)){ temp = e; } } return temp; } @Override public boolean addStudent(Student student) { students.add(student); return true; } @Override public void diplayAllStudents(){ for(Student e:students){ if (e != null) System.out.println(e); } } }
//StudentDaoArrayImpl.java package stumanagement; public class StudentDaoArrayImpl implements StudentDao { private Student[] students; public StudentDaoArrayImpl(int size) { students = new Student[size]; } @Override public Student getStuByName(String name) { Student temp = null; for(int i=0; i<students.length;i++){ if(students[i]!= null){ if (students[i].getName().equals(name)){ temp = students[i]; break; } } } return temp; } @Override public boolean addStudent(Student student) { boolean success = false; for(int i=0; i<students.length;i++){ if(students[i]==null){ students[i] = student; success = true; break; } } return success; } @Override public void diplayAllStudents(){ for(Student e:students){ if (e != null) System.out.println(e); } } }
两种java文件都可以实现3个功能
- getStuByName(String name) 查询学生信息;
- addStudent(Student student) 添加学生;
- diplayAllStudents() 显示所有学生;
但是每个功能的实现方式不同,这两个方法对于学生数据的存储的数据结构不同。StudenDaoListImpl.java用List列表的方式存储,StudentDaoArrayImpl.java用数组的方式存储。
//StudentDao.java package stumanagement; public interface StudentDao { public boolean addStudent(Student student); public Student getStuByName(String name); public void diplayAllStudents(); }
StudentDao.java是DAO接口,DAO接口的作用是:把对数据库的所有操作定义成抽象方法,可以提供多种实现。因为其中方法为抽象方法,所以没有实现代码。
3. 使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
参考文档:https://www.jb51.net/article/127382.htm
DAO(Data Access Object)顾名思义是一个为数据库或其他持久化机制提供了抽象接口的对象,在不暴露底层持久化方案实现细节的前提下提供了各种数据访问操作。
DAO模式实际上包含了两个模式,一是Data Accessor(数据访问器),二是Data Object(数据对象),前者要解决如何访问数据的问题,而后者要解决的是如何用对象封装数据。
个人理解:DAO模式就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法,但是DAO接口不提供对这些方法的实现。当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口,在逻辑上该类对应一个特定的数据存储。