Modèle de conception - Modèle d'objet de transfert

Le modèle d'objet de transfert est utilisé lorsque nous voulons transmettre des données avec plusieurs attributs en une seule fois du client au serveur. L'objet de transfert est également appelé objet de valeur. Transfer Object est une classe POJO simple ayant des méthodes getter / setter et est sérialisable afin de pouvoir être transférée sur le réseau. Il n'a aucun comportement. La classe affaires côté serveur récupère normalement les données de la base de données et remplit le POJO et l'envoie au client ou le transmet par valeur. Pour le client, l'objet de transfert est en lecture seule. Le client peut créer son propre objet de transfert et le transmettre au serveur pour mettre à jour les valeurs de la base de données en une seule fois. Voici les entités de ce type de modèle de conception.

  • Business Object - Business Service remplit l'objet de transfert avec des données.

  • Transfer Object - POJO simple ayant des méthodes pour définir / obtenir des attributs uniquement.

  • Client - Le client demande ou envoie l'objet de transfert à Business Object.

la mise en oeuvre

Nous allons créer un StudentBO en tant qu'objet métier, Student en tant qu'objet de transfert représentant nos entités.

TransferObjectPatternDemo , notre classe de démonstration, agit en tant que client ici et utilisera StudentBO et Student pour démontrer le modèle de conception d'objet de transfert.

Étape 1

Créer un objet de transfert.

StudentVO.java

public class StudentVO {
   private String name;
   private int rollNo;

   StudentVO(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 un objet métier.

StudentBO.java

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

public class StudentBO {
	
   //list is working as a database
   List<StudentVO> students;

   public StudentBO(){
      students = new ArrayList<StudentVO>();
      StudentVO student1 = new StudentVO("Robert",0);
      StudentVO student2 = new StudentVO("John",1);
      students.add(student1);
      students.add(student2);		
   }
   public void deleteStudent(StudentVO student) {
      students.remove(student.getRollNo());
      System.out.println("Student: Roll No " + student.getRollNo() + ", deleted from database");
   }

   //retrive list of students from the database
   public List<StudentVO> getAllStudents() {
      return students;
   }

   public StudentVO getStudent(int rollNo) {
      return students.get(rollNo);
   }

   public void updateStudent(StudentVO student) {
      students.get(student.getRollNo()).setName(student.getName());
      System.out.println("Student: Roll No " + student.getRollNo() +", updated in the database");
   }
}

Étape 3

Utilisez StudentBO pour démontrer le modèle de conception d'objet de transfert.

TransferObjectPatternDemo.java

public class TransferObjectPatternDemo {
   public static void main(String[] args) {
      StudentBO studentBusinessObject = new StudentBO();

      //print all students
      for (StudentVO student : studentBusinessObject.getAllStudents()) {
         System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");
      }

      //update student
      StudentVO student = studentBusinessObject.getAllStudents().get(0);
      student.setName("Michael");
      studentBusinessObject.updateStudent(student);

      //get the student
      student = studentBusinessObject.getStudent(0);
      System.out.println("Student: [RollNo : " + student.getRollNo() + ", Name : " + student.getName() + " ]");
   }
}

Étape 4

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 ]