Emilio J. Gomez
Buscar en moleculax
Conceptos clave relacionados con DTO en Java

Además del patrón DTO (Data Transfer Object), existen otros conceptos fundamentales que ayudan a estructurar aplicaciones Java de forma limpia y escalable.

🧩 Tabla de conceptos

Concepto Descripción
POJO (Plain Old Java Object) Clase Java simple sin dependencias externas ni lógica compleja. Los DTO suelen ser POJOs.
VO (View Object) Representa los datos que se muestran en la interfaz de usuario. Puede derivarse de un DTO.
DO (Domain Object) Modelo que representa entidades del negocio. Contiene lógica relacionada con el dominio.
PO (Persistent Object) Objeto que refleja directamente una tabla en la base de datos. Se usa en la capa de persistencia.
BO (Business Object) Encapsula lógica de negocio. Puede interactuar con DOs y coordinar procesos.
DAO (Data Access Object) Patrón que abstrae el acceso a la base de datos. Se encarga de operaciones CRUD sobre los POs.


🔄 Relación entre los conceptos

  • El DAO accede a la base de datos y devuelve un PO.
  • El BO usa el PO para aplicar lógica de negocio.
  • El resultado se transforma en un DTO para enviarlo a otra capa.
  • Finalmente, el DTO puede convertirse en un VO para mostrarlo en la interfaz.

Este flujo permite mantener una arquitectura desacoplada, modular y fácil de mantener.

Ejemplos de código en Java

1. POJO (Plain Old Java Object)


public class Usuario {
    private String nombre;
    private int edad;

    public Usuario() {}

    public Usuario(String nombre, int edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    public String getNombre() { return nombre; }
    public void setNombre(String nombre) { this.nombre = nombre; }

    public int getEdad() { return edad; }
    public void setEdad(int edad) { this.edad = edad; }
}
  

2. VO (View Object)


public class UsuarioVO {
    private String nombreCompleto;
    private String mensajeBienvenida;

    public UsuarioVO(String nombreCompleto) {
        this.nombreCompleto = nombreCompleto;
        this.mensajeBienvenida = "Bienvenido, " + nombreCompleto;
    }

    public String getNombreCompleto() { return nombreCompleto; }
    public String getMensajeBienvenida() { return mensajeBienvenida; }
}
  

3. DO (Domain Object)


public class Producto {
    private Long id;
    private String nombre;
    private double precio;

    public Producto(Long id, String nombre, double precio) {
        this.id = id;
        this.nombre = nombre;
        this.precio = precio;
    }

    // Getters y setters omitidos por brevedad
}
  

4. PO (Persistent Object)


@Entity
@Table(name = "productos")
public class ProductoPO {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "nombre")
    private String nombre;

    @Column(name = "precio")
    private double precio;

    // Getters y setters
}
  

5. BO (Business Object)


public class ProductoBO {
    private ProductoDAO productoDAO = new ProductoDAO();

    public double calcularDescuento(Long productoId) {
        ProductoPO producto = productoDAO.obtenerPorId(productoId);
        return producto.getPrecio() * 0.9; // 10% de descuento
    }
}
  

6. DAO (Data Access Object)


public class ProductoDAO {
    public ProductoPO obtenerPorId(Long id) {
        // Simulación de acceso a base de datos
        return new ProductoPO(id, "Ejemplo", 100.0);
    }

    public void guardar(ProductoPO producto) {
        // Simulación de persistencia
        System.out.println("Producto guardado: " + producto.getNombre());
    }
}
  

Estos ejemplos ilustran cómo se separan responsabilidades en una arquitectura Java bien estructurada. Puedes combinarlos para construir aplicaciones limpias, escalables y fáciles de mantener.

.

Wikipedia

Resultados de la búsqueda

agenda 2023 (1) Algo que leer (257) Android (2) Angular (2) Apache (4) API (1) Arte y Cultura (11) Artes Marciales (10) Banner (1) Base de datos (29) Big Data (11) Budismo (4) cabala judia (2) Calculo Asistido por computadoras (2) Canaima (6) Caos (1) Ceo (1) ciencias (1) Cine (1) Cobol (1) Cobra Kai (1) Codigo Linux Documental (2) Computación (3) Computación forense (14) Configurando Samba (1) Consola (8) Criptomonedas (3) Darkweeb (3) Data Mining (1) Debian (1) DeepWeb (7) demografia (6) Deporte y Recreación (9) Deportes (10) Desktop (1) developers (1) Document (1) Ecología (6) Editor (2) Educacion y TIC (27) Electronica (2) Emprendimiento (7) Espiritualidad (2) Eventos (2) Excel (1) Express (1) Filosofía (23) Flisol 2008 (3) Flisol 2010 (1) Flisol 2015 (1) framework (1) Funny (1) Geografía (1) Gerencia y Liderazgo (72) Gestor de Volúmenes Lógicos (1) Git (5) GitHub (6) gnu (23) Go (1) gobiernos (1) golang (2) Google por dentro (1) GraphQL (1) gRPC (1) Hackers - Documental (8) Hacking (30) howto (188) html (1) IA (6) IntelliJIDEA (1) Internet (6) Introducción a los patrones (2) J SON (1) java (31) java eclipse (2) javaScript (8) JDK (1) jiujitsu (4) Json (1) kali (37) kernel (2) Kotlin (1) Laravel (2) Latin (1) LIbreOffice (1) Libros (4) Linux (34) Linux VirtualBox (1) Literatura (1) Manuales (42) Marketing (1) Matando ladilla (9) Matematricas (1) Math (1) maven (1) metodos https (1) Modelos (1) MongoDB (17) Multimedia (1) mvc (2) Mysql (19) MySQL Workbench (1) Nagios (2) Naturismo (1) node (2) Node.js (3) NodeJS (6) NoSQL (1) Oracle (3) Oracle sql (3) Php (1) PL/SQL (1) Plsql (1) PNL (1) Poblacion (2) Poesia (1) Politica (1) Política (1) Postgresql (1) PowerShell (1) programacion (66) Psicologia (8) Python (4) Redes (31) Religion (2) REST (2) Rock/Metal Mp3 (1) RUP (1) Salud (5) sc:snap:android-studio (1) sc:snap:datagrip (1) sc:snap:gitkraken linux (1) Seguridad (14) Seguridad con Gnu Privacy (2) Seo (1) simulaEntrevistas (9) Sistemas Operativos (69) SOAP (1) Sociedad (2) Software Libre (169) Soporte Tecnico (12) Sphinx (1) spring (1) spring boot (8) SQL (3) SQL en postgreSQL (38) Taekwondo (11) Tecnología (27) Tor (9) Trialectica (3) TYPEACRIPT (1) Ubuntu (5) Vida activa (1) Videos (11) Videos Educativos (10) Vim (1) Viral (3) Visual Studio (1) wallpaper (2) Wifi (2) Windows (3) WWW (2) Xrandr (1)

Powered by