Formación informática

Java | Joomla | MySQL

Curso de Java - Tema 31: bases de datos

La biblioteca como base de datos clásica

En este curso no se explicará nada sobre la creación, administración y mantenimiento de bases de datos. Simplemente se mostrará el procedimiento para realizar la conexión a la base de datos así como  para la entrada, recuperación y actualización de datos usando las clases que Java tiene para ello.

Sin embargo, sí se realizará un pequeño recordatorio de la sintaxis SQL que sea necesaria aplicar en cada caso para tenerla de referencia.

En este punto se explicará el procedimiento general para MySQL y Microsoft SQL Server para trabajar a través de la línea de comandos con código Java. Más adelante se explicará cómo se trabaja con aplicaciones gráficas creadas con swing y aplicaciones web. De esta forma, está todo más organizado.

Sistemas Gestores de Bases de Datos

En el mercado existen diversos Sistemas Gestores de Bases de Datos (S.G.B.D.) Relacionales que son programas que permiten crear y administrar bases de datos totalmente operativas para cualquier entorno y sistema operativo con un coste controlado, desde cero euros hasta lo que queramos invertir… en función de las necesidades de nuestro proyecto.

El S.G.B.D. por antonomasia es MySQL. En la actualidad, tiene detrás a la potente empresa Oracle y tiene diferentes versiones con funcionalidades distintas. La versión gratuita es MySQL Community Edition y permite crear y administrar complejas bases de datos así como realizar conexiones con Java.

La empresa de Redmond ofrece Microsoft SQL Server como S.G.B.D. Existen varias versiones del mismo que se diferencian por la capacidad y potencia de la aplicación. La versión gratuita es Microsoft SQL Server Express y es más que suficiente para realizar cualquier base de datos.

Sin lugar a dudas, el S.G.B.D. más completo y potente es Oracle Database Developer. Es la solución más costosa de todas debido a que ofrece funcionalidades avanzadas.

Por último, vamos a mencionar la base de datos que incluye NetBeans y que podemos usar para realizar pruebas. Se llama Java DB e incluye una base de datos para gestionar una aplicación de ventas.

Proceso general

Independientemente del S.G.B.D. el proceso para trabajar con bases de datos es el mismo. Aunque es técnicamente posible, no se debería realizar con Java la creación o modificación de bases de datos o tablas puesto que esto lo hace mejor el S.G.B.D. que estemos usando, que es para lo que está diseñado. Sólo deberíamos realizar consultas de selección, inserción y actualización de datos. Por este motivo, es lo único que veremos aquí.

Primero realizamos la conexión con el S.G.B.D. específico y la base de datos, a continuación preparamos la consulta SQL de acuerdo a la sintaxis específica y por último trabajamos con el resultado de la consulta para mostrarlo por línea de comandos. En el proceso tendremos que usar diferentes objetos para poder mostrar el resultado de la consulta.

Organización de los paquetes

Para mantener una organización correcta de la aplicación, vamos a crear un paquete llamado dao, abreviatura de Data Access Objetc u Objetos de Acceso a datos, que albergará la clase ManejadorBd que nos permitirá interactuar con la base de datos: desde la conexión hasta la realización de consultas y tratamiento de la respuesta lanzada por MySQL. Escribiremos tantos métodos como sea necesario para tener organizada la aplicación.

En la clase Main escribiremos el código necesario para recuperar los resultados y mostrarlos usando los métodos creados con la clase ManejadorBd. Por lo tanto, necesitaremos instanciar un objeto de esta clase para poder acceder a sus métodos. Lo anterior implica que necesitamos importar a nuestra clase Main la clase ManejadorDb.

La forma más cómoda y sencilla, aunque algo más laboriosa, de trabajar con las bases de datos es crear un JavaBean para cada una de las tablas de nuestra base de datos. De esta forma, tenemos un objeto para realizar el tratamiento de los datos de nuestras consultas. Por lo tanto, tenemos que crear un paquete llamado beans que almacene una clase JavaBean por cada una de nuestras tablas. El identificador de cada clase será el mismo que el nombre de la tabla en la base de datos. De esta forma, cada campo de la tabla se convierte en un atributo privado de la clase con su tipo de dato correspondiente. En cada JavaBean hay que crear varios métodos con una función específica:

  1. Un método constructor vacío que nos servirá para crear objetos vacíos de la clase.
  2. Un método constructor con todos los atributos de la clase que nos permitirá realizar consultas de selección en las que recuperemos todos los campos de la tabla. Si no existen casos numéricos autoincrementales, también nos servirá para realizar consultas de inserción y actualización de datos.
  3. En el caso de que la tabla tenga uno o varios campos numéricos autoincrementales, necesitamos realizar un método constructor con todos los atributos excepto los autoincrementales, que son manejados automáticamente por el S.G.B.D que estemos usando para almacenar nuestros datos. Este método nos permitirá realizar consultas de inserción o actualización de datos.
  4. En el caso de realizar consultas con solo algún campo necesitaremos métodos constructores que tengan como parámetros los campos de la base de datos que tenemos que recuperar.
  5. Métodos captadores de todos los atributos de la clase para poder recuperar el valor de cada atributo. Si no los definimos, no podremos crear el método toString.
  6. Métodos definidores de todos los atributos de la clase para poder definir el valor de cada atributo. Si no están definidios, no se podrán realizar consultas de inserción o actualización de datos.
  7. Método de tipo toString sobreescrito para formatear la salida de los datos cuando recuperamos los datos desde un objeto. Otra opción es llamarlo mostrarNombreJavaBean y nos evitamos sobreescribir. Si no tenemos este método, el sistema nos mostrará la dirección de memoria que apunta al objeto.

Esta forma de trabajar con las bases de datos forma parte del Mapeo Objeto-Relacional o como se conocen comúnmente ORM, de las siglas en inglés Object Relational Mapping. Las ventajas de este sistema son:

  • Se crea una base de datos virtual donde los datos de nuestra aplicación quedan vinculados a la base de datos, obteniendo una persistencia de la información.
  • Se reduce la cantidad de código a escribir.
  • La acción de transformar toda la información que recibes desde de la base de datos en objetos Java, y viceversa, se llama mapeo. Utilizando ORM éste es automático.
  • El mapeo será independiente del S.G.B.D. que estes utilizando. Incluso podemos cambiar de motor de base de datos con muy pocos cambios.
  • Las modificaciones de las consultas son más sencillas cuando se introducen nuevos campos.

Forma de trabajo con S.G.B.D.

Por lo tanto, de forma resumida, la forma de trabajo con bases de datos para recuperr datos a través de la línea de comandos será la siguiente:

  • Crearemos un paquete llamado beans que contendrá todos los JavaBeans para realizar el tratamiento adecuado de cada una de las tablas de nuestra base de datos.
  • Crearemos un paquete llamado dao que contendrá la clase encargada de gestionar la conexión y consultas sobre la base de datos.
  • En el método principal, usaremos los métodos de cada una de las clases para mostrar la información.
Curso de Java - Tema 30: lectura y escritura en ficheros en formato binario | Curso de Java - Tema 32.1: MySQL - Conexión con la base de datos
Curso de Java - Índice Ejercicios Nivel Medio

Escribir un comentario

Aunque los comentarios no expresan la opinión del administrador del sitio web, éste si que tiene una responsabilidad legal sobre lo que aparece. Por lo tanto, habrá una labor de moderación de los mensajes. No se permitirán mensajes ofensivos ni publicidad


Código de seguridad
Refescar

Solicitamos su permiso para obtener datos estadísticos de su navegación en esta web, en cumplimiento del Real Decreto-Ley 13/2012, de 30 de marzo. Si continúa navegando consideramos que acepta el uso de cookies. . Más información