Design Pattern - Transfer Object Pattern

Pola Transfer Object digunakan ketika kita ingin melewatkan data dengan banyak atribut dalam satu kesempatan dari klien ke server. Objek transfer juga dikenal sebagai Objek Nilai. Transfer Object adalah kelas POJO sederhana yang memiliki metode pengambil / penyetel dan dapat diserialkan sehingga dapat ditransfer melalui jaringan. Itu tidak memiliki perilaku apa pun. Kelas bisnis Sisi Server biasanya mengambil data dari database dan mengisi POJO dan mengirimkannya ke klien atau meneruskannya dengan nilai. Untuk klien, objek transfer bersifat hanya baca. Klien dapat membuat objek transfernya sendiri dan meneruskannya ke server untuk memperbarui nilai dalam database dalam satu kesempatan. Berikut adalah entitas dari jenis pola desain ini.

  • Business Object - Business Service mengisi Objek Transfer dengan data.

  • Transfer Object - POJO sederhana memiliki metode untuk mengatur / mendapatkan atribut saja.

  • Client - Klien meminta atau mengirimkan Objek Transfer ke Objek Bisnis.

Penerapan

Kami akan membuat StudentBO sebagai Objek Bisnis, Mahasiswa sebagai Objek Transfer yang mewakili entitas kami.

TransferObjectPatternDemo , kelas demo kami, bertindak sebagai klien di sini dan akan menggunakan StudentBO dan Student untuk mendemonstrasikan Pola Desain Objek Transfer.

Langkah 1

Buat Objek Transfer.

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

Langkah 2

Buat Objek Bisnis.

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

LANGKAH 3

Gunakan StudentBO untuk mendemonstrasikan Pola Desain Objek Transfer.

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

LANGKAH 4

Verifikasi hasilnya.

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