crud en java

Cómo crear un CRUD en Java, utilizando el patrón DAO y MVC

Hola que tal, esta vez vamos a crear todas la operaciones CRUD en Java utilizando los Patrones de diseño MVC y DAO, pero bueno te preguntarás que es un CRUD, esta palabra es un acrónimo del habla inglesa que quiere decir create, read, update, delete que en español es crear, leer, actualizar, eliminar y que se refiere a los registros de una base de datos.

Aprende este y otros temas de Programación Java Web. Accede gratis al Curso de Java EE y suscribete al canal de Youtube.

Aunque si utilizas algún framework como Spring en Java o Laravel en PHP no deberías preocuparte por esto, ya que el mismo framework lo implementa.

A pesar que como mencioné si utilizas un framework esto ya no tiene mucho sentido aún así me parece interesante el conocer que existe y más si recién estas iniciando a trabajar con base de datos.  

Que vas a necesitar?

Bien, para realizar un CRUD el requisito principal y obligatorio es tener instalado MySQL.

Además, una herramienta gráfica que te permita administrar MySQL, estas pueden ser: phpMyadmin, MySQL Workbench o cualquier otra herramienta similar que tengas instalada.

Sino la tienes y sabes manejar comandos SQL, lo puedes hacer también a través de comandos SQL por consola.

Para este ejemplo voy a utilizar MySQL Workbench ya que tiene una interfaz amigable y aprovechar también que ya la tengo instalada.

Si aún no tienes instalado MySQL puedes revisar este tutorial, dónde también explico algunas cosas básicas como por ejemplo crear una conexión entre otras cosas para la instalación, Aprende a instalar MySQL y MySQL Workbench en Windows 10.

Nota: Si te interesa seguir el tema de programación Web con Java, puedes revisar mi Curso de Programación Java Web, con JSP, Servlet y JPA donde aprenderás paso a paso como desarrollar aplicaciones web con Java.

Pasos generales para crear un CRUD en Java

  1. Crear una base de datos y una tabla.
  2. En Eclipse crear un nuevo proyecto Java.
  3. Conectarte a la base de datos a través de JDBC Driver.
  4. Programar los métodos para el CRUD.
  5. Usar los métodos CRUD.

1. Crear la base de datos

Antes que nada debes crear una base de datos en MySQL llamada ventas con una tabla llamada cliente, con los siguientes campos id, cedula, nombre y apellido, el campo id debe ser autoincrementable.

Puedes acceder al tutorial donde explico Cómo crear una base de datos en MySQL utilizando MySQL Workbench o puedes utilizar cualquier herramienta que desees, lo importante es crear la base de datos, la tabla cliente y sus campos.

Si quieres seguir el tema de programación Web con Java puedes revisar los siguientes enlaces:

2. Crear un nuevo proyecto Java

Lo siguiente que vas hacer es crear un proyecto en Java, ya que el CRUD lo vamos hacer desde la consola, la estructura del proyecto debe quedar de la siguiente manera, no te preocupes, luego te explicaré como hacerlo.

crud en java

3. Crear la conexión a través de JDBC Driver

Una vez creado el proyecto vas hacer la conexión de la aplicación a la base de datos, recuerda que para esto debes descargar el driver de conexión y agregarlo al class path del proyecto.

Si aún no lo tienes o no sabes como hacerlo revisa el siguiente tutorial Cómo conectase a MySQL desde java.

4. Programar los métodos CRUD

Ahora vamos a programar las operaciones CRUD utilizando el patrón de diseño DAO para la parte del acceso a los datos.

Primero empezamos creando el modelo que es la clase Cliente.java y que es la clase que va mapear los atributos de la tabla cliente en la base de datos ventas.

Luego creamos la Interface IClienteDAO.java que registra los métodos CRUD, al ser una interface solo contiene la firma de los métodos.

Lo siguiente es crear la implementación de la interface anterior, para esto lo hacemos en la clase ClienteDaoImpl.java, nota que también utilizamos la clase Conexion.java, para la ejecución de comandos SQL.

Aplicando el patrón Modelo Vista Controlador.

Una vez creado el acceso a datos los DAO’s vamos a utilizar la arquitectura MVC para poder utilizar los métodos CRUD.

El modelo ya lo habíamos creado anteriormente, así que ahora sólo vamos a crear la vista y luego el controlador.

La vista es el lugar donde se va mostrar los datos del modelo, recuerda que en la arquitectura MVC la vista no interactua directamente con el modelo ni con el acceso a los datos, sino lo hace a través del controlador.

Ahora nos queda crear el controlador que es el encargado de enlazar el acceso a los datos con la vista:

5. Demo del CRUD

Finalmente lo que haremos es crear un demo para ver el funcionamiento de lo que programamos anteriormente.

Nota: Si te interesa seguir el tema de programación Web con Java, puedes revisar mi Curso de Programación Java Web, con JSP, Servlet y JPA donde aprenderás paso a paso como desarrollar aplicaciones web con Java.

Recuerda seguir la estructura del proyecto que vimos en la primera imagen, para que todo funcione correctamente. 

Espero que este tutorial te haya servido, nos vemos en la próxima entrada y si tuviste algún problema no dudes en dejarme un comentario.

Full Stack Developer, JavaScript, PHP, Java, Spring, Laravel, Vuejs, Blogger, aprendiendo y compartiendo conocimientos. Cursos de Programación Web en: https://programacionfullstack.com/

Artículos Recomendados

18 Thoughts to “Operaciones CRUD en Java, utilizando el patrón DAO, Manual completo”

  1. Toni

    Gracias por el ejemplo, es una gran aportación.
    Me gustaría preguntarte si en el paquete vista se puede o si tienes implementada una interfaz gráfica.
    Muchas gracias.

    1. Elivar Largo

      Hola Toni, por supuesto que si se puede implementar una interfaz gráfica, ya que solo es cuestión de llamar al Controller y usar los DAOS. Espero a futuro poder crear un artículo con el Patrón DAO, pero usando JSP y Servlet. Saludos!!

  2. Mar

    Excelente, gracias por compartir

  3. Camilo Orozco

    Esta muy interesante el articulo, pero tengo una duda, primero si se puede hacer la interfaz por medio de java fx, ¿cómo sería el procedimiento ?

    1. Elivar Largo

      Hola Camilo, no he usado Java FX, pero de forma general lo que tendrías que hacer es crear los objetos de tipo CRUD en tu parte de la vista e invocar los métodos.

  4. Jerson

    y si no se logra agregar a un cliente donde pondrías los mensajes para que le llegue al usuario,
    para que sepa donde se está equivocando, en el modelo mismo retornadno en el método un mensaje o un boolean al controlador para que lo interprete y emita un mensaje a la vista y la vista lo imprima con un JOptionPane…
    En internet sólo encuentro ejemplos igual al que muestra usted, pero nadie me dice donde puedo poner esos mensajes si lo hago en el modelo, controlador o en la misma vista, si fueras tan amable de explicarme eso, además eh visto que algunos llevan todos los eventos de los eventos de los botones al controlador.

    1. Elivar Largo

      La parte de validaciones las puedes hacer directamente desde el cliente usando HTML5 con el atributo required del elemento input sin necesidad de ir hasta el servidor a validar, puesto que si tienes muchas peticiones vas a recargar el servidor. Claro está que también lo puedes hacer desde el servidor con una clase Helper donde pongas todos tus mensajes y en el modelo harías estas validaciones.

  5. frank

    intente ejecutar el programa marca el siguiente error, alguna idea de por que

    java.sql.SQLException: DERBY SQL error: SQLCODE: -1, SQLSTATE: XJ040, SQLERRMC: Failed to start database ‘blogWeb?user=web01&password=web01’ with class loader sun.misc.Launcher$AppClassLoader@266474c2, see the next exception for details.::SQLSTATE: XJ001Java exception: ‘Invalid argument: java.io.IOException’.
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)

    1. Hola frank, verifica que los accesos a tu base de datos sean los correctos, usuario, clave, nombre de base de datos, y que el servicio que inicia tu base de datos esté iniciado. Saludos

  6. Berni

    Disculpa la pregunta pero veo que tienes cursos en Udemy sobre java, en esos cursos tu tratas estos temas de MVC, DAO. He visto varios cursos de Java pero pocos son los que tratan estos patrones de diseño y me llaman mucho la atención.

    1. Hola Berni, respondiendo a tu pregunta, los cursos de UDEMY son cursos de afiliado es decir que gano una comisión por cada curso que un estudiante compre, esto lo explico mejor en la parte de Acerca del Sitio, con lo que ningún curso de Udemy están dictados por mi. Actualmente estoy creando un curso que si lo dicto yo y parte de los temas los explico en la web Programación Full Stack Cursos, adicionalmente algunos videos del curso están en mi Canal de Youtube que puedes revisarlos. Saludos

  7. matias

    Estimado, que diferencia hay entre

    IClienteDao dao= new ClienteDaoImpl(); y realizar ClienteDaoImpl dao= new ClienteDaoImpl()

    Si bien entiendo la diferencia entre interface y clase pero no logro entender porque una forma estaria bien y la otra no o si las dos esta bien.
    GRacias

    1. La diferencia principal en este caso entre crear un objeto a partir de la interfaz y no de la misma clase radica en que por ejemplo si tuviéramos varias clases que implementen la misma interfaz yo pudiera crear varias instancias usando la misma declaración de variable (usando la interfaz) y con la misma crear tipos de objetos ya con clases específicas. Por ejemplo digamos que tengo la interface IPersona y las clases Hombre y Mujer. Y ambas clases implementan la interface IPersona. Yo podría crear objetos usando una misma variable por ejemplo Ipersona p= new Hombre() y con las misma declaración podría instanciar un la clase persona: p = new Mujer(). Esto se puede hacer ya que la interfaz es dueña o conoce de ambas implementaciones. En este caso es igual instanciar ya sea usando ClienteDaoImpl o IClienteDaoImpl, pero lo declare de la primera forma por buenas prácticas de programación.

  8. Monica

    muy buen post me sirvió demasiado, sigue asi!

    1. Gracías Monica, también puedes encontrar más recursos sobre programación Java Web en mi canal de Youtube Canal de Youtube con recursos de programación Java Web

  9. Mi hermano muchas gracias, ya tenia hecho el CRUD pero sin ningun patron de diseño, ahoar quedara mejor mi software

  10. Juan

    Cuando creo la conexion funcina bien, y la pruebo e igualmente me retorna que esta conectada. Sin embargo cuando voy a empezar a implementar los crud desde la interfaz me da error en las variables tipo Statements. No se porque se da el error.
    stm = con.createStatements(); Y dice que ese metodo no existe en la clase conexion.

    Muchas gracias por quien quiera ayudarme

    1. Asegurate de imnportar la clase java.sql.Connection para el objeto Connection con que es el que recibe la conexión.

Dejar un Comentario

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