Patrón de Objeto de Transferencia
El patrón de objeto de transferencia (Transfer Object Pattern) se utiliza para transferir datos con múltiples atributos desde el cliente al servidor de una sola vez. El objeto de transferencia también se conoce como objeto de valor. El objeto de transferencia es una clase POJO simple con métodos getter/setter; es serializable, por lo que puede transmitirse a través de la red. No tiene ningún comportamiento. Las clases de negocio del lado del servidor generalmente leen datos de la base de datos, luego completan el POJO y lo envían al cliente o lo pasan por valor. Para el cliente, el objeto de transferencia es de solo lectura. El cliente puede crear su propio objeto de transferencia y pasarlo al servidor para actualizar los valores de la base de datos de una sola vez. A continuación se presentan las entidades de este patrón de diseño.
- Objeto de negocio (Business Object)- Servicio de negocio que completa los datos para el objeto de transferencia.
- Objeto de transferencia (Transfer Object)- POJO simple, solo con métodos para establecer/obtener propiedades.
- Cliente (Client)- El cliente puede enviar solicitudes o enviar el objeto de transferencia al objeto de negocio.
Resumen
Intención
Se utiliza para simplificar la transferencia de datos entre la red o las capas de la aplicación. Encapsula los datos creando una clase con múltiples atributos que representan los datos que deben transferirse.
Problemas principales que resuelve
- Resuelve los problemas de eficiencia y encapsulamiento al transferir datos entre capas en sistemas distribuidos, especialmente en aplicaciones de múltiples capas.
Escenarios de uso
- Cuando se necesita transferir grandes cantidades de datos entre el cliente y el servidor, especialmente en servicios web o llamadas a procedimientos remotos (RPC).
Método de implementación
- Clase de objeto de transferencia: define una clase con múltiples atributos que representan los datos que deben transferirse.
- Capa de acceso a datos: se encarga de extraer datos de la base de datos u otras fuentes de datos y completarlos en el objeto de transferencia.
- Capa de lógica de negocio: opcional, maneja la lógica de negocio y puede necesitar usar el objeto de transferencia.
- Capa de presentación o cliente: utiliza el objeto de transferencia para mostrar datos o como portador de datos de entrada del usuario.
Código clave
- Clase de objeto de transferencia: contiene atributos y posible lógica de negocio, para el encapsulamiento y la transferencia de datos.
Ejemplos de aplicación
- Aplicación web: la capa de presentación obtiene o envía datos desde/hacia el servidor mediante el objeto de transferencia.
Ventajas
- Reducir la sobrecarga de comunicación de red: al transferir múltiples datos de una sola vez, se reduce el número de solicitudes de red.
- Encapsulamiento: el objeto de transferencia actúa como un portador de encapsulamiento de datos y oculta la estructura interna de los datos.
- Fácil de mantener: gestiona centralizadamente los datos de transferencia, lo que facilita la modificación y la ampliación.
Desventajas
- Uso excesivo: puede aumentar la complejidad del sistema debido a la creación de demasiados objetos de transferencia.
Recomendaciones de uso
- Cuando sea necesario transferir grandes cantidades de datos entre diferentes capas de una aplicación de múltiples capas, considere usar el patrón de objeto de transferencia.
Precauciones
- El objeto de transferencia debe mantenerse ligero y evitar incluir demasiada lógica de negocio.
Principales roles involucrados
-
Clase de objeto de transferencia (Transfer Object Class):
- Encapsula los datos que deben transferirse.
-
Capa de acceso a datos (Data Access Layer):
- Proporciona los datos y puede ser responsable de completarlos en el objeto de transferencia.
-
Capa de lógica de negocio (Business Logic Layer) (opcional):
- Opcional, maneja la lógica de negocio y puede usar el objeto de transferencia.
-
Capa de presentación o cliente (Presentation Layer or Client):
- Usa el objeto de transferencia para mostrar datos o enviar solicitudes.
El patrón de objeto de transferencia, al encapsular los datos de transferencia en un objeto, ofrece una forma eficaz de reducir el número de comunicaciones de red y simplificar el proceso de transferencia de datos.
Implementación
Crearemos uno que actúe como objeto de negocioStudentBOy uno que actúe como objeto de transferenciaStudentVO, que representan nuestras entidades.
TransferObjectPatternDemoLa clase aquí actúa como un cliente y utilizaráStudentBOyStudentpara demostrar el patrón de diseño de objeto de transferencia.
Paso 1
Crear el objeto de transferencia.
StudentVO.java
Paso 2
Crear el objeto de negocio.
StudentBO.java
Paso 3
UsarStudentBOpara demostrar el patrón de diseño de objeto de transferencia.
TransferObjectPatternDemo.java
Paso 4
Ejecutar el programa y mostrar el resultado:
Student: [RollNo : 0, Name : Robert ] Student: [RollNo : 1, Name : John ] Student: Roll No 0, updated in the database Student: [RollNo : 0, Name : Michael ]Otras extensiones