객체 전송 모드


Transfer Object Pattern은 여러 속성을 가진 데이터를 클라이언트에서 서버로 한 번에 전송하는 데 사용됩니다. 전송 객체는 숫자 객체라고도 합니다. 전송 객체는 getter/setter 메소드가 있는 간단한 POJO 클래스이며 직렬화 가능하므로 네트워크를 통해 전송할 수 있습니다. 동작이 없습니다. 서버 측 비즈니스 클래스는 일반적으로 데이터베이스에서 데이터를 읽고 POJO를 채운 다음 클라이언트에 보내거나 값으로 전달합니다. 클라이언트에게 전송 개체는 읽기 전용입니다. 클라이언트는 자체 전송 객체를 생성하고 이를 서버에 전달하여 데이터베이스의 값을 한 번에 업데이트할 수 있습니다. 다음은 이 디자인 패턴의 엔터티입니다.

  • Business Object - 전송 객체에 대한 데이터를 채우는 비즈니스 서비스입니다.

  • Transfer Object - 속성을 설정/가져오는 메소드만 있는 간단한 POJO입니다.

  • Client - 클라이언트는 요청을 보내거나 전송 개체를 비즈니스 개체로 보낼 수 있습니다.

Implementation

우리는 비즈니스 객체로 StudentBO를 생성하고 전송 객체로 StudentVO를 생성할 것입니다. 둘 다 엔터티를 나타냅니다.

TransferObjectPatternDemo, 데모 클래스는 클라이언트로 제공되며 StudentBOStudent를 사용하여 전송 객체 디자인 패턴을 시연합니다.

transferobject_pattern_uml_diagram.jpg

1단계

전송 객체를 생성합니다.

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

2단계

비즈니스 객체를 생성합니다.

StudentBO.java

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

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

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

3단계

StudentBO를 사용하여 전송 개체 디자인 패턴을 보여줍니다.

TransferObjectPatternDemo.java

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

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

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

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

4단계

출력을 확인합니다.

rreee