It is one of the Java EE design patterns. We need Transfer Object when we need to pass the data across various attributes in a packet to the server. Value Object is another name for transfer object. The transfer object is just a class of POJO which has a method of the getter and setter. It is serializable which means we can transfer it through the network.
The transfer object does not acquire any behavior. The class known as server-side business is generally responsible for fetching data and filling the POJO then, sending it to the respective client or passing it the value. Client objects, the object is in read-only mode. The clients are capable for creating their own transfer objects. They can even pass object to servers in order to update the values in databases in one go.
Let’s see the following class diagram of the transfer object.
also read:
It requires certain components to implement the transfer object design pattern. Each of these components has certain tasks to perform and certain problems to cater. These components include client, business object, and transfer object. The client object is responsible for representing the client of the enterprise bean.
Let’s see the following sample implementation of the Transfer Object.
EmployeeVO.java
/** * */ package com.doj.patterns.j2ee.transferobject; /** * @author Dinesh.Rajput * */ public class EmployeeVO { private String name; private int empNo; public EmployeeVO(String name, int empNo) { super(); this.name = name; this.empNo = empNo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getEmpNo() { return empNo; } public void setEmpNo(int empNo) { this.empNo = empNo; } }
EmployeeBO.java
/** * */ package com.doj.patterns.j2ee.transferobject; import java.util.ArrayList; import java.util.List; /** * @author Dinesh.Rajput * */ public class EmployeeBO { List employees; public EmployeeBO(){ employees = new ArrayList<>(); EmployeeVO employee1 = new EmployeeVO("Dinesh",0); EmployeeVO employee2 = new EmployeeVO("Arnav",1); employees.add(employee1); employees.add(employee2); } public void deleteEmployee(EmployeeVO employee) { employees.remove(employee.getEmpNo()); System.out.println("Employee: Roll No " + employee.getEmpNo() + ", deleted from database"); } public List getAllEmployees() { return employees; } public EmployeeVO getEmployee(int empNo) { return employees.get(empNo); } public void updateEmployee(EmployeeVO employee) { employees.get(employee.getEmpNo()).setName(employee.getName()); System.out.println("Employee: Emp No " +employee.getEmpNo() +", updated in the database"); } }
TransferObjectPatternDemo.java
/** * */ package com.doj.patterns.j2ee.transferobject; /** * @author Dinesh.Rajput * */ public class TransferObjectPatternDemo { public static void main(String[] args) { EmployeeBO EmployeeBusinessObject = new EmployeeBO(); //print all Employees for (EmployeeVO employee : EmployeeBusinessObject.getAllEmployees()) { System.out.println("Employee: [Emp No : " + employee.getEmpNo() + ", Name : " + employee.getName() + " ]"); } //update Employee EmployeeVO employee = EmployeeBusinessObject.getAllEmployees().get(0); employee.setName("Anamika"); EmployeeBusinessObject.updateEmployee(employee); //get the Employee employee = EmployeeBusinessObject.getEmployee(0); System.out.println("Employee: [Emp No : " + employee.getEmpNo() + ", Name : " + employee.getName() + " ]"); } }
Employee: [Emp No : 0, Name : Dinesh ] Employee: [Emp No : 1, Name : Arnav ] Employee: Emp No 0, updated in the database Employee: [Emp No : 0, Name : Anamika ]
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…