corak objek capaian data


Corak Objek Akses Data atau corak DAO digunakan untuk memisahkan API atau operasi akses data peringkat rendah daripada perkhidmatan perniagaan peringkat tinggi. Berikut ialah peserta corak Objek Akses Data.

  • Antara Muka Objek Akses Data - Antara muka ini mentakrifkan operasi standard yang akan dilakukan pada objek model.

  • Kelas konkrit Objek Akses Data - Kelas ini melaksanakan antara muka di atas. Kelas ini bertanggungjawab untuk mendapatkan data daripada sumber data, yang boleh menjadi pangkalan data, xml atau mekanisme storan lain.

  • Objek Model/Objek Nilai - Objek ini ialah POJO ringkas yang mengandungi kaedah get/set untuk menyimpan data menggunakan data Diperoleh kelas DAO.

Pelaksanaan

Kami akan mencipta objek Pelajar yang sama ada objek model atau objek berangka. StudentDao ialah antara muka objek akses data. StudentDaoImpl ialah kelas entiti yang melaksanakan antara muka objek akses data. DaoPatternDemo, kelas demo kami menggunakan StudentDao untuk menunjukkan penggunaan corak objek akses data.

dao_pattern_uml_diagram.jpg

Langkah 1

Buat objek berangka.

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

Langkah 2

Buat antara muka objek akses data.

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

Langkah 3

Buat kelas entiti yang melaksanakan antara muka di atas.

StudentDaoImpl.java

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

public class StudentDaoImpl implements StudentDao {
	
   //列表是当作一个数据库
   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");
   }

   //从数据库中检索学生名单
   @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");
   }
}

Langkah 4

Gunakan StudentDao untuk menunjukkan penggunaan corak objek akses data.

CompositeEntityPatternDemo.java

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

      //输出所有的学生
      for (Student student : studentDao.getAllStudents()) {
         System.out.println("Student: [RollNo : "
            +student.getRollNo()+", Name : "+student.getName()+" ]");
      }


      //更新学生
      Student student =studentDao.getAllStudents().get(0);
      student.setName("Michael");
      studentDao.updateStudent(student);

      //获取学生
      studentDao.getStudent(0);
      System.out.println("Student: [RollNo : "
         +student.getRollNo()+", Name : "+student.getName()+" ]");		
   }
}

Langkah 5

Sahkan output.

rreeee