DAO Design Pattern

Data Access Object Mode

Data Access Object Pattern or DAO mode is used to separate low-level data access APIs or operations from advanced business services. The following are participants of the data access object model.

  • Data Access Object Interface - This interface defines the standard operations to be performed on a model object.
  • Data Access Object concrete class - This class implements the above interface. This class is responsible for getting data from a data source, which can be a database, xml, or other storage mechanism.
  • Model Object/Value Object - This object is a simple POJO that contains a get/set method to store the data retrieved by using the DAO class.


We will create an Student object as a model or numeric object. StudentDao is the data access object interface. StudentDaoImpl is the entity class that implements the data access object interface. DaoPatternDemo, our demo class uses StudentDao to demonstrate the usage of data access object patterns.

Data Access Object Mode diagram

Step 1

Create a numeric object.


public class Student { private String name; private int rollNo; Student(String name, int rollNo){ this.name = name; this.rollNo = rollNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getRollNo() { return rollNo; } public void setRollNo(int rollNo) { this.rollNo = rollNo; } }


import java.util.List; public interface StudentDao { public List<Student> getAllStudents(); public Student getStudent(int rollNo); public void updateStudent(Student student); public void deleteStudent(Student student); }

Step 3

Create an entity class that implements the above interface.


import java.util.ArrayList; import java.util.List; public class StudentDaoImpl implements StudentDao { //List is treated as a database List<Student> students; public StudentDaoImpl(){ students = new ArrayList<Student>(); Student student1 = new Student("Robert",0); Student student2 = new Student("John",1); students.add(student1); students.add(student2); } @Override public void deleteStudent(Student student) { students.remove(student.getRollNo()); System.out.println("Student: Roll No " + student.getRollNo() +", deleted from database"); } //Retrieve student list from database @Override public List<Student> getAllStudents() { return students; } @Override public Student getStudent(int rollNo) { return students.get(rollNo); } @Override public void updateStudent(Student student) { students.get(student.getRollNo()).setName(student.getName()); System.out.println("Student: Roll No " + student.getRollNo() +", updated in the database"); } }

Step 4

Use StudentDao to demonstrate the use of data access object patterns.


public class DaoPatternDemo { public static void main(String[] args) { StudentDao studentDao = new StudentDaoImpl(); //Output all students for (Student student : studentDao.getAllStudents()) { System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } //Update student Student student =studentDao.getAllStudents().get(0); student.setName("Michael"); studentDao.updateStudent(student); //Get students studentDao.getStudent(0); System.out.println("Student: [RollNo : " +student.getRollNo()+", Name : "+student.getName()+" ]"); } }

javacodegeeks is optimized for learning.© javacodegeeks .
All Right Reserved and you agree to have read and accepted our term and condition