Вы находитесь на странице: 1из 11

Programación Web Full Stack


Inicio Blog Curso Java Web Servicio de envío comprobantes al SRI Acerca del Sitio

PATRONES DE DISEÑO EN JAVA: MVC, DAO Y DTO

Programación Java SE  Patrones de diseño en Java: MVC, DAO y DTO

Buscar

ENCUESTAS
Qué temas de programación web
te gustaría aprender?

Java Web (JSP, Hibernate, JSF,


Web Services)

Programación con PHP (Ajax,


Base de datos, HTML)

Spring Framework

Framework Laravel
 20 noviembre, 2016  Elivar Largo
Programación móvil con Android

LOS PATRONES DE DISEÑO EN JAVA MVC, DAO, JavaScript (Node, Frameworks


DTO Y CÓMO UTILIZARLOS JavaScript)

Hola que tal, esta vez voy hablar acerca de los patrones de diseño en Java, Java SE
específicamente de los patrones Modelo Vista Controlador (MVC), Data Acces Voto
Object (DAO) y Data Transfer Object (DTO) y su implementación en Java con Ver resultados
ejemplos sencillos.
Aprende este y otros temas de Programación Java Web. Accede gratis al Curso de ENCUESTAS
Java EE y suscribete al canal de Youtube.
Por qué quisieras aprender estos
QUÉ ES UN PATRÓN DE DISEÑO?
temas?
Un patrón de diseño es una solución probada que resuelve un tipo específico de
problema en el desarrollo de software referente al diseño. Quisiera a futuro postular para
un trabajo
Existen una infinidad de patrones de diseño los mismos que se dividen en
categorías por ejemplo: de creación, estructurales, de comportamiento, interacción Estoy trabajando actualmente y
etc. quiero mejorar mis habilidades

Cada uno se especializa en resolver un problema específico, si quieres profundizar Quiero emprender un proyecto
y revisar todas las categorías y ejemplos a detalle puedes visitar Design Patterns Por pasatiempo / Sólo por
Book . aprender
El tema es bastante extenso, que no alcanzaría una sola entrada, pero esta vez Voto
quiero hablar de los patrones MVC, DAO, DTO que en lo personal y en la práctica Ver resultados
considero los más utilizados al menos para el desarrollo en Java.
CATEGORÍAS

Programación Android (1)

Programación con Laravel (3)

Programación General (6)

Programación Java EE (12)

Programación Java SE (26)

Programación JavaScript (2)


POR QUÉ UTILIZAR UN PATRÓN DE DISEÑO?
Programación PHP (23)
Ahora, cuales son las ventajas?, bueno son algunas, entre las principales es que
Spring (1)
permiten tener el código bien organizado, legible y mantenible, además te
permite reutilizar código y aumenta la escalabilidad en tu proyecto. WordPress, Diseño Web y Blogging (4)

En sí proporcionan una terminología estándar y un conjunto de buenas prácticas


en cuanto a la solución en problemas de desarrollo de software. ARTÍCULOS
Sin más palabras voy ha empezar ha describirlos con sus respectivos ejemplos. RECIENTES
EL PATRÓN MODEL VIEW CONTROLLER O MVC
El patrón de diseño Modelo Vista
En español Modelo Vista Controlador, este patrón permite separar una aplicación Controlador y la librería JSTL
en 3 capas, una forma de organizar y de hacer escalable un proyecto, a
Introducción a JPA
continuación una breve descripción de cada capa.
Cómo crear un CRUD en Java con JPA
Modelo: Esta capa representa todo lo que tiene que ver con el acceso a datos: e Hibernate
guardar, actualizar, obtener datos, además todo el código de la lógica del negocio,
Cómo crear un web services SOAP
básicamente son las clases Java y parte de la lógica de negocio.
usando JAX-WS en Eclipse
Vista: La vista tiene que ver con la presentación de datos del modelo y lo que ve
Cómo crear un repositorio local con
el usuario, por lo general una vista es la representación visual de un modelo (POJO
Git y subirlo a GitHub
o clase java).
Por ejemplo el modelo usuario que es una clase en Java y que tiene como
SUSCRIPCIÓN
propiedades, nombre y apellido debe pertenecer a una vista en la que el usuario
vea esas propiedades.
Controlador: El controlador es el encargado de conectar el modelo con las vistas,
funciona como un puente entre la vista y el modelo, el controlador recibe eventos
generados por el usuario desde las vistas y se encargar de direccionar al modelo la
petición respectiva.
Por ejemplo el usuario quiere ver los clientes con apellido Álvarez, la petición va al
controlador y el se encarga de utilizar el modelo adecuado y devolver ese modelo
a la vista.
Suscríbete ahora y recibe en tu
Si te das cuenta en ningún momento interactúan directamente la vista con el correo los mejores contenidos
modelo, esto también mantiene la seguridad en una aplicación. sobre Programación Web.
Nota: Si te interesa seguir el tema de programación Web con Java, puedes revisar Nombre
mi Curso de Programación Java Web donde aprenderás paso a paso como
desarrollar aplicaciones web con Java.
Email

QUE GANÓ UTILIZANDO ESTE PATRÓN?


Lo importante de este patrón es que permite dividir en partes, que de alguna He leído y acepto las políticas de
privacidad
manera son independientes, con lo que si por ejemplo hago algún cambio el
modelo no afectaría a la vista o si hay algún cambio sería mínimo.
SUSCRIBIRME
PERO, CÓMO IMPLEMENTO EL MODELO VISTA CONTROLADOR?
Tus datos estarán protegidos y 100%
libre de Spam

Para usar este patrón de diseño en Java, primero creas el modelo, que es una clase
en java y se llama Cliente.java, esta clase sólo contiene los atributos,
constructor, getters y setters.
1 package com.ecodeup.model;
2
3 public class Cliente {
4 private int id;
5 private String nombre;
6 private String apellido;
7
8
9 public Cliente() {
10 }
11
12 public int getId() {
13 return id;
14 }
15 public void setId(int id) {
16 this.id = id;
17 }
18 public String getNombre() {
19 return nombre;
20 }
21 public void setNombre(String nombre) {
22 this.nombre = nombre;
23 }
24 public String getApellido() {
25 return apellido;
26 }
27 public void setApellido(String apellido) {
28 this.apellido = apellido;
29 }
30 }

Luego creas la vista, la clase ClienteView.java, que es un clase que va hacer de


vista para el ejemplo y su función es presentar los datos del modelo.
1 package com.ecodeup.view;
2
3 public class ClienteView {
4 public void imprimirDatosCliente(int id,String nombre, String apellido) {
5 System.out.println("**** DATOS CLIENTE ****");
6 System.out.println("Id: "+id);
7 System.out.println("Nombre: "+nombre);
8 System.out.println("Apellido: "+apellido);
9 }
10 }

Esta clase lo único que va hacer es imprimir los datos del modelo que es la clase
Cliente.java.
Ahora creas el controlador, el controlador contiene 2 objetos el modelo, la vista así
como los getters y setters para llenar las propiedades del modelo y un
método(actualizarVista()) que llama a la vista que a su vez imprime las
propiedades del modelo cliente.
1 package com.ecodeup.controller;
2
3 import com.ecodeup.model.Cliente;
4 import com.ecodeup.view.ClienteView;
5
6 public class ClienteController {
7 //objetos vista y modelo
8 private ClienteView vista;
9 private Cliente modelo;
10
11 //constructor para inicializar el modelo y la vista
12 public ClienteController(Cliente modelo, ClienteView vista) {
13 this.modelo = modelo;
14 this.vista = vista;
15 }
16
17 //getters y setters para el modelo
18 public int getId() {
19 return modelo.getId();
20 }
21 public void setId(int id) {
22 this.modelo.setId(id);
23 }
24 public String getNombre() {
25 return modelo.getNombre();
26 }
27 public void setNombre(String nombre) {
28 this.modelo.setNombre(nombre);
29 }
30 public String getApellido() {
31 return modelo.getApellido();
32 }
33 public void setApellido(String apellido) {
34 this.modelo.setApellido(apellido);
35 }
36
37 //pasa el modelo a la vista para presentar los datos
38 public void actualizarVista() {
39 vista.imprimirDatosCliente(modelo.getId(),modelo.getNombre(), modelo.getApellido());
40 }
41 }

Finalmente queda hacer un test para comprobar el patrón de diseño Modelo Vista
Controlador funciona:
1 package com.ecodeup.mvc;
2
3 import com.ecodeup.controller.ClienteController;
4 import com.ecodeup.model.Cliente;
5 import com.ecodeup.view.ClienteView;
6
7 public class MvcDemo {
8
9 public static void main (String [] args){
10 // objeto vista, y modelo creado con el método estático
11 Cliente modelo= llenarDatosCliente();
12 ClienteView vista= new ClienteView();
13
14 //se crea un objeto controlador y se le pasa el modelo y la vista
15 ClienteController controlador= new ClienteController(modelo, vista);
16
17 // se muestra los datos del cliente
18 controlador.actualizarVista();
19
20 // se actualiza un cliente y se muestra de nuevo los datos
21 controlador.setNombre("Luis");
22 controlador.actualizarVista();
23 }
24 //método estático que retorna el cliente con sus datos
25 private static Cliente llenarDatosCliente() {
26 Cliente cliente = new Cliente();
27 cliente.setId(1);
28 cliente.setNombre("Elivar");
29 cliente.setApellido("Largo");
30 return cliente;
31 }
32 }

EL PATRÓN DATA TRANSFER OBJECT (DTO/VO)


Va de la mano con el patrón de diseño DAO.
Se utiliza para transferir varios atributos entre el cliente y el servidor o viceversa,
básicamente consta de 2 clases:
La primera es una clase java conocida como Value Object que
únicamente contiene sus atributos, constructor, getters y setters, esta
clase no tiene comportamiento.
La segunda es una clase del lado del servidor conocida como clase de
negocio (en la implementación también se conoce como Business
Object) es la que se encarga de obtener datos desde la base de datos y
llenar la clase Value Object y enviarla al cliente, o a su vez recibir la
clase desde el cliente y enviar los datos al servidor, por lo general tiene
todos los métodos CRUD (create, read, update y delete).

Se implementa de la siguiente forma:

Se crea la clase ClienteVO.java que será la clase también conocida como Value
Object:
1 package com.ecodeup.vo;
2
3 public class ClienteVO {
4 private int id;
5 private String nombre;
6 private String apellido;
7
8
9 public ClienteVO(int id, String nombre, String apellido) {
10 this.id = id;
11 this.nombre = nombre;
12 this.apellido = apellido;
13 }
14 public int getId() {
15 return id;
16 }
17 public void setId(int id) {
18 this.id = id;
19 }
20
21 public String getNombre() {
22 return nombre;
23 }
24 public void setNombre(String nombre) {
25 this.nombre = nombre;
26 }
27
28 public String getApellido() {
29 return apellido;
30 }
31 public void setApellido(String apellido) {
32 this.apellido = apellido;
33 }
34
35 @Override
36 public String toString() {
37 return this.getNombre()+" "+this.getApellido();
38 }
39 }

Se crea la clase ClienteBO.java conocida también como la clase de negocio, que


es la que contiene todos los métodos CRUD:
1 package com.ecodeup.bo;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.ecodeup.vo.ClienteVO;
7
8 public class ClienteBO {
9
10 //lista de tipo cliente
11 List<ClienteVO> clientes;
12
13
14 //constructor, se guarda en la lista 2 clientes
15 public ClienteBO() {
16 clientes = new ArrayList<>();
17 ClienteVO cliente1= new ClienteVO(0,"Elivar","Largo");
18 ClienteVO cliente2= new ClienteVO(1,"Priscila","Morocho");
19 clientes.add(cliente1);
20 clientes.add(cliente2);
21 }
22
23 //elimina el cliente que se le pasa como paraámetro
24 public void eliminarCliente(ClienteVO cliente) {
25 clientes.remove(cliente.getId());
26 System.out.println("Cliente "+cliente.getId()+" eliminado satisfactoriamente");
27 }
28
29 //obtiene toda la lista de clientes
30 public List<ClienteVO> obtenerClientes(){
31 return clientes;
32 }
33
34 //obtiene un cliente de acuerdo al id pasado como parámetro
35 public ClienteVO obtenerCliente(int id) {
36 return clientes.get(id);
37 }
38
39 // actualiza el cliente que se le pasa como parámetro
40 public void actualizarCliente(ClienteVO cliente) {
41 clientes.get(cliente.getId()).setNombre(cliente.getNombre());
42 clientes.get(cliente.getId()).setApellido(cliente.getApellido());
43 System.out.println("Cliente id: "+ cliente.getId()+" actualizado satisfactoriamente");
44 }
45 }

Finalmente probamos el patrón Data Transfer Object:


1 package com.ecodeup.dto;
2
3 import com.ecodeup.bo.ClienteBO;
4 import com.ecodeup.vo.ClienteVO;
5
6 public class DTODemo {
7 public static void main(String[] args) {
8 //objeto business object
9 ClienteBO clienteBusinessObject = new ClienteBO();
10
11 //obtiene todos los clientes
12 clienteBusinessObject.obtenerClientes().forEach(System.out::println);
13
14 // actualiza un cliente
15 System.out.println("****");
16 ClienteVO cliente = clienteBusinessObject.obtenerCliente(0);
17 cliente.setNombre("Luis");
18 clienteBusinessObject.actualizarCliente(cliente);
19
20 // obtiene un cliente
21 System.out.println("****");
22 cliente=clienteBusinessObject.obtenerCliente(0);
23 System.out.println(cliente);
24
25 //elimina un cliente
26 System.out.println("****");
27 cliente=clienteBusinessObject.obtenerCliente(0);
28 clienteBusinessObject.eliminarCliente(cliente);
29 }
30 }

EL PATRÓN DATA ACCES OBJECT (DAO)


El problema que viene a resolver este patrón es netamente el acceso a los datos,
que básicamente tiene que ver con la gestión de diversas fuentes de datos y
además abstrae la forma de acceder a ellos.
Imagínate que tienes un sistema montado en producción con una base de datos
MySQL y de pronto lo debes cambiar a PostgreSQL o a cualquier otro motor de
base de datos.
Eso puede ser un verdadero problema.
Y precisamente esto lo que soluciona este patrón, tener una aplicación que no esté
ligada al acceso a datos, que si por ejemplo la parte de la vista pide encontrar los
clientes con compras mensuales mayores $ 200, el DAO se encargue de traer esos
datos independientemente si está en un archivo o en una base de datos.
La capa DAO contiene todos los métodos CRUD (create, read, update, delete), por
lo general se tiene un DAO para cada tabla en la base de datos, y bueno la
implementación se la realiza de la siguiente manera.

Se crea una clase Cliente.java únicamente con sus constructores, getters y


setters.
1 package com.ecodeup.model;
2
3 public class Cliente {
4 private int id;
5 private String nombre;
6 private String apellido;
7
8
9 public Cliente() {
10 super();
11 }
12 public Cliente(int id, String nombre, String apellido) {
13 super();
14 this.id = id;
15 this.nombre = nombre;
16 this.apellido = apellido;
17 }
18 public int getId() {
19 return id;
20 }
21 public void setId(int id) {
22 this.id = id;
23 }
24
25 public String getNombre() {
26 return nombre;
27 }
28 public void setNombre(String nombre) {
29 this.nombre = nombre;
30 }
31
32 public String getApellido() {
33 return apellido;
34 }
35 public void setApellido(String apellido) {
36 this.apellido = apellido;
37 }
38
39 @Override
40 public String toString() {
41 return this.getNombre()+" "+this.getApellido();
42 }
43 }

Se crea el acceso a los datos a través de una interface IClienteDao.java, aquí se


declara todos los métodos para acceder a los datos.
1 package com.ecodeup.idao;
2
3 import java.util.List;
4
5 import com.ecodeup.model.Cliente;
6
7 public interface IClienteDao {
8 //declaración de métodos para acceder a la base de datos
9 public List<Cliente> obtenerClientes();
10 public Cliente obtenerCliente(int id);
11 public void actualizarCliente(Cliente cliente);
12 public void eliminarCliente(Cliente cliente);
13 }

Se implementa en la clase ClienteDaoImpl.java haciendo un implements de la


interface IClienteDao.java, lo que se hace aquí, no es más que implementar cada
método de la interface.
1 package com.ecodeup.dao;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.ecodeup.idao.*;
7 import com.ecodeup.model.Cliente;
8
9 public class ClienteDaoImpl implements IClienteDao {
10
11 //lista de tipo cliente
12 List<Cliente> clientes;
13
14 //inicializar los objetos cliente y añadirlos a la lista
15 public ClienteDaoImpl() {
16 clientes = new ArrayList<>();
17 Cliente cliente1 = new Cliente(0,"Javier", "Molina");
18 Cliente cliente2 = new Cliente(1,"Lillian","Álvarez");
19 clientes.add(cliente1);
20 clientes.add(cliente2);
21 }
22
23 //obtener todos los clientes
24 @Override
25 public List<Cliente> obtenerClientes() {
26 return clientes;
27 }
28
29 //obtener un cliente por el id
30 @Override
31 public Cliente obtenerCliente(int id) {
32 return clientes.get(id);
33 }
34
35 //actualizar un cliente
36 @Override
37 public void actualizarCliente(Cliente cliente) {
38 clientes.get(cliente.getId()).setNombre(cliente.getNombre());
39 clientes.get(cliente.getId()).setApellido(cliente.getApellido());
40 System.out.println("Cliente con id: "+cliente.getId()+" actualizado satisfactoriamente");
41 }
42
43 //eliminar un cliente por el id
44 @Override
45 public void eliminarCliente(Cliente cliente) {
46 clientes.remove(cliente.getId());
47 System.out.println("Cliente con id: "+cliente.getId()+" elimnado satisfactoriamente");
48 }
49 }

Por último se prueba el patrón DAO a través de la clase DaoDemo.java


1 package com.ecodeup.daodemo;
2
3 import com.ecodeup.dao.ClienteDaoImpl;
4 import com.ecodeup.idao.IClienteDao;
5 import com.ecodeup.model.Cliente;
6
7 public class DaoDemo {
8
9 public static void main(String[] args) {
10 // objeto para manipular el dao
11 IClienteDao clienteDao = new ClienteDaoImpl();
12
13 // imprimir los clientes
14 clienteDao.obtenerClientes().forEach(System.out::println);
15
16 // obtner un cliente
17 Cliente cliente = clienteDao.obtenerCliente(0);
18 cliente.setApellido("Pardo");
19 //actualizar cliente
20 clienteDao.actualizarCliente(cliente);
21
22 // imprimir los clientes
23 System.out.println("*****");
24 clienteDao.obtenerClientes().forEach(System.out::println);
25 }
26 }

Por lo general en un proyecto se suele unir estos tres patrones, ya que no sólo
basta utilizar el MVC, puesto que la parte de acceso a datos queda un poco suelta,
entonces si tu pregunta es. Si se puede utilizar los tres patrones en un proyecto? la
respuesta es SI, y de echo se puede mezclar con otra infinidad de patrones que
existen.
Todo dependerá del tipo de problema que quieras solucionar.
Y por último, tampoco se debe abusar con el uso de patrones, ya que utilizarlos de
forma desmedida y de brindar ayuda pueden llegar a ser perjudicial para nuestro
código .
Bueno espero le hayas sacado todo el provecho a esta entrada y más que todo que
hayas aprendido.
Un Saludo.
Y antes de irte coméntame que te pareció la entrada y que patrón utilizas
para tus proyectos?
Si te interesa seguir el tema de programación Web con Java, puedes revisar mi
Curso de Programación Java Web donde aprenderás este y otros temas:
Curso de Programación Java Web
Cómo crear un Proyecto Web en Eclipse ,
CÓMO CREAR UN CRUD EN JAVA WEB CON JSP Y SERVLET ,
Integrar Bootstrap en un proyecto Java Web usando Java 8 .

Programación Web Full Stack


Suscríbete ahora y recibe los mejores contenidos
sobre Programación Web en tu correo.

Nombre Email

SUSCRIBIRME
Tus datos estarán protegidos y 100% libre de Spam

ELIVAR LARGO

Blogger y Developer Java Full Stack, aprendiendo y compartiendo


conocimientos. Aprende a crear aplicaciones Java Web desde cero en:
https://programacionfullstack.com/

 Programación Java SE  DAO , DTO , Modelo Vista Controlador , MVC , Patrones de diseño en Java

 Cómo crear una Base de Datos utilizando MySQL y Operaciones CRUD en Java, utilizando el patrón DAO,
MySQL Workbench Manual completo 

ARTÍCULOS RECOMENDADOS

 junio 13, 2018  Elivar Largo  0  enero 16, 2018  Elivar Largo   enero 08, 2018  Elivar Largo 
2 7
ESTRUCTURA Y
COMPONENTES DE UNA MÉTODOS, VARIABLES Y ¿QUÉ LENGUAJE DE
CLASE EN JAVA BLOQUES STATIC EN JAVA PROGRAMACIÓN DEBERÍA
CON EJEMPLOS APRENDER?
Cuál es la estructura y
componentes de una clase... Métodos, variables y bloques ¿Qué lenguaje de programación
Programación Java SE static en Java Hola que... debería aprender? Qué lenguaje
Programación Java SE de...
Programación General

Programación Java SE

Programación PHP

34 THOUGHTS TO “PATRONES DE DISEÑO EN JAVA: MVC, DAO Y DTO”

rafael
 22 noviembre, 2016 at 11:51 pm
gracias por tu blog, solo una consulta, habria una posibilidad que pudieras hacer un tutorial sobre
como hacer reportes java con jaspereport.

Responder

Elivar Largo
 23 noviembre, 2016 at 8:21 am
Hola Rafael, claro que si, espera los próximos post que publicaré sobre el tema. Un
saludo

Responder

Elivar Largo
 4 diciembre, 2016 at 10:49 am
CÓMO CREAR REPORTES EN JAVA CON JASPERREPORTS Y JASPERSOFT STUDIO:
https://www.ecodeup.com/como-crear-reportes-en-java-con-jasperreports/

Responder

Juan Carlo
 26 febrero, 2017 at 1:37 am
Muy claro, gracias Elivar

Responder

Elivar Largo
 26 febrero, 2017 at 8:20 am
Gracias a ti por leerme, un saludo!!

Responder
Livio
 31 mayo, 2017 at 9:39 pm
Que tal, he desarrollado en Java Se7 (swing), no he usado ningún framework, ahora me gustaría
pasarme a JavaFx, ¿Que framework me recomiendas?

Responder

Elivar Largo
 31 mayo, 2017 at 11:15 pm
Todo bien Livio, no tengo experiencia con JavaFx, así que no podría decirte ni
recomendarte algún framework, si de pronto te interesa programar con Java para la
Web, podrías empezar usando Servlet y Jsp, aplicando algún patrón como por ejemplo MVC junto
con DAO, ya que adquieras un poco de experiencia, podrías usar Spring. Espero haberte ayudado en
algo. Saludos!!!

Responder

krz
 5 junio, 2017 at 12:52 pm
Exquisito post nada que decir

Responder

Elivar Largo
 5 junio, 2017 at 2:08 pm
Me alegro que te haya gustado. Saludos!!

Responder

Dennis
 6 junio, 2017 at 5:46 pm
Hola! Excelente explicación, me has quitado muchas dudas.
Gracias.

Responder

Elivar Largo
 6 junio, 2017 at 8:23 pm
Hola Dennis, gracias a ti por tu comentario. Un saludo!!

Responder

Ignacio
 8 junio, 2017 at 6:17 pm
Muy bueno el tuto Elivar! muy claro y util. Saludoss

Responder

Elivar Largo
 8 junio, 2017 at 9:31 pm
Gracias por tu comentario Ignacio.. También un saludo!!!

Responder

jose
 20 junio, 2017 at 4:14 pm
Para usar el patrón (DAO) es necesario utilizar el patrón MVC?

Responder

Elivar Largo
 20 junio, 2017 at 4:24 pm
No para nada, son dos patrones diferentes: DAO tiene que ver con el acceso a datos,
mientras que MVC digamos que estructura el proyecto en 3 capas.
Desde mi punto de vista DAO extiende a la capa del Modelo en MVC. Saludos..

Responder

Antonio
 23 junio, 2017 at 2:29 am
¿Tienes el codigo en algún repositorio para descargar?
Responder

Elivar Largo
 7 julio, 2017 at 1:51 pm
De momento no. Para los próximos tutoriales espero crear un repositorio.

Responder

Andres
 2 julio, 2017 at 5:46 am
Hola.

Como aporte me gustaría dejar claro que el MVC no es un patrón de diseño, es un patrón arquitectónico,
siempre ha existido esa confucion en cuanto al MVC.

Responder

Elivar Largo
 3 julio, 2017 at 12:23 pm
Hola Andres, gracias por tu aporte. Un saludo

Responder

Sebastian Fernandez
 21 julio, 2017 at 1:02 pm
Genio! Muy buenos los tuto.
Podras hacer alguno de java web services ??

Saludos!

Responder

Elivar Largo
 21 julio, 2017 at 10:49 pm
Lo tomaré en cuenta para los próximos tutoriales. Un saludo

Responder

HolaMundo
 30 enero, 2018 at 10:25 am
Gracias por quitarle faena a mi profesora.

Responder

Compartelo
 5 agosto, 2017 at 8:52 am
Muchas gracias, muy bien explicado

Responder

Maoly
 14 agosto, 2017 at 1:38 pm
Buen tutorial. Recomendación: Debes cuidar la ortografía

Responder

Elivar Largo
 14 agosto, 2017 at 3:21 pm
Lo tomaré cuenta

Responder

angel
 24 agosto, 2017 at 12:33 am
ERES EL PUTO AMO

Responder

Jhonatan
 7 septiembre, 2017 at 2:55 pm
Excelente información, recibe mis agradecimientos

Responder
Alfonso
 29 septiembre, 2017 at 10:29 am
Gracias, Explicas muy bién. Había mirado otros manuales que usaban muchos tecnicismos y se
volvían muy complejos. En cambio este manual, explica bien, de forma concisa y sin enrredos.

Responder

Elivar Largo
 29 septiembre, 2017 at 2:37 pm
Me alegro mucho que te haya sido fácil de entender.
Saludos!!!

Responder

Miguel Garcia
 10 diciembre, 2017 at 7:01 am
Hola, Elivar:
Me ha encantado el planteamiento, y ahora me gustaria plantearte una duda. Para cumplir con la
encapsulación, el modelo no debería contener los filtros para garantizar los datos (casos de máximo, mínimo,
alfabético, numérico,…), y si no es asi, donde podriamos ubicar esos filtros y como los relacionamos con el
modelo?

Responder

Elivar Largo
 11 diciembre, 2017 at 2:25 pm
Hola Miguel que tal.
No precisamente, recordemos que la encapsulación es una característica de la
programación orientada a objetos, lo que consiste en la ocultación de las propiedades de la clase
simplemente con los modificadores de acceso. Aunque en Frameworks como por ejemplo MVC4 de
Visual Studio de Microsofot, es posible hacerlo desde el modelo (es decir desde las clases).
Por lo general esto es tipo de validaciones que mencionas, al menos desde mi punto de vista es
mejor hacerlas desde el cliente, de manera que no recargues con peticiones al servidor.
Si tienes una aplicación Web con Java, puedes usar algún Framework como por ejemplo JSF para la
parte de la vista lo que te ayuda a validar las propiedades de cada bean de manera simple, desde la
vista (no desde la clase). Adicionalmente si estás trabajando por ejemplo con JSP y servlet, puedes
usar la librería apache validator, en este caso si deberías poner las restricciones dentro de los
atributos de la clase.
Saludos..

Responder

UG
 28 febrero, 2018 at 11:48 pm
Excelente, gracias por la tutoria

Responder

Martin
 27 julio, 2018 at 10:54 am
Excelente explicación. No entendía nada y ahora si! Gracias!
Hay alguno de spring o hibernate?
Gracias nuevamente!

Responder

Elivar Largo
 7 agosto, 2018 at 2:36 pm
Hola Martin, puedes revisar los siguientes enlaces que son parte introductorio a Spring:
https://www.ecodeup.com/descargar-y-configurar-spring-tools-suit-sts-para-
desarrollar-proyectos-web/ , Cómo crear un aplicación MVC con Spring Tool Suit , Cómo crear un
servicio web restfull en Spring

Responder

DEJAR UN COMENTARIO

Comment

Name
Email
Website URL

Guardar mi nombre, correo electrónico y sitio web en este navegador para la próxima vez
que haga un comentario.

Añadir Comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios .

Вам также может понравиться