Mẫu đối tượng truy cập dữ liệu

Mẫu đối tượng truy cập dữ liệu hoặc mẫu DAO được sử dụng để tách API hoặc hoạt động truy cập dữ liệu cấp thấp khỏi các dịch vụ kinh doanh cấp cao. Sau đây là những người tham gia Mẫu đối tượng truy cập dữ liệu.

  • Data Access Object Interface - Giao diện này xác định các hoạt động tiêu chuẩn được thực hiện trên (các) đối tượng mô hình.

  • Data Access Object concrete class- Lớp này thực hiện giao diện trên. Lớp này chịu trách nhiệm lấy dữ liệu từ nguồn dữ liệu có thể là cơ sở dữ liệu / xml hoặc bất kỳ cơ chế lưu trữ nào khác.

  • Model Object or Value Object - Đối tượng này là POJO đơn giản chứa các phương thức get / set để lưu trữ dữ liệu được truy xuất bằng lớp DAO.

Thực hiện

Chúng ta sẽ tạo một đối tượng Student hoạt động như một Model hoặc Value Object. StudentDao là Giao diện đối tượng truy cập dữ liệu. StudentDaoImpl là lớp cụ thể triển khai Giao diện đối tượng truy cập dữ liệu. DaoPatternDemo , lớp demo của chúng tôi, sẽ sử dụng StudentDao để chứng minh việc sử dụng mẫu Đối tượng truy cập dữ liệu.

Bước 1

Tạo Đối tượng Giá trị.

Student.java

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;
   }
}

Bước 2

Tạo giao diện đối tượng truy cập dữ liệu.

StudentDao.java

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);
}

Bước 3

Tạo lớp cụ thể thực hiện giao diện trên.

StudentDaoImpl.java

import java.util.ArrayList;
import java.util.List;

public class StudentDaoImpl implements StudentDao {
	
   //list is working 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");
   }

   //retrive list of students from the 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");
   }
}

Bước 4

Sử dụng StudentDao để chứng minh việc sử dụng mẫu Đối tượng truy cập dữ liệu.

DaoPatternDemo.java

public class DaoPatternDemo {
   public static void main(String[] args) {
      StudentDao studentDao = new StudentDaoImpl();

      //print 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 the student
      studentDao.getStudent(0);
      System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");		
   }
}

Bước 5

Xác minh kết quả đầu ra.

Student: [RollNo : 0, Name : Robert ]
Student: [RollNo : 1, Name : John ]
Student: Roll No 0, updated in the database
Student: [RollNo : 0, Name : Michael ]