Modèle d'objet d'accès aux données

Le modèle d'objet d'accès aux données ou le modèle DAO est utilisé pour séparer les données de bas niveau accédant à l'API ou aux opérations des services métier de haut niveau. Voici les participants au modèle d'objet d'accès aux données.

  • Data Access Object Interface - Cette interface définit les opérations standard à effectuer sur un ou plusieurs objets du modèle.

  • Data Access Object concrete class- Cette classe implémente l'interface ci-dessus. Cette classe est chargée d'obtenir des données à partir d'une source de données qui peut être database / xml ou tout autre mécanisme de stockage.

  • Model Object or Value Object - Cet objet est un simple POJO contenant des méthodes get / set pour stocker les données récupérées à l'aide de la classe DAO.

la mise en oeuvre

Nous allons créer un objet Student agissant comme un objet modèle ou valeur. StudentDao est l'interface d'objet d'accès aux données. StudentDaoImpl est une classe concrète implémentant l'interface d'objet d'accès aux données. DaoPatternDemo , notre classe de démonstration, utilisera StudentDao pour démontrer l'utilisation du modèle d'objet d'accès aux données.

Étape 1

Créer un objet de valeur.

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

Étape 2

Créer une interface d'objet d'accès aux données.

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

Étape 3

Créez une classe concrète implémentant l'interface ci-dessus.

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

Étape 4

Utilisez StudentDao pour illustrer l'utilisation du modèle d'objet d'accès aux données.

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() + " ]");		
   }
}

Étape 5

Vérifiez la sortie.

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