Uso de bases de datos MySQL en Java con PHP

0
267
GARD Pro Not Registered

El uso de bases de datos es una característica fundamental de cualquier aplicación en la actualidad. Las bases de datos MySQL (ver MySQL dev) son unas de las más utilizadas, aunque existe una tendencia actual hacia el uso de nuevas plataformas (véase MongoDB). Aún así, MySQL es uno de los motores de bases de preferencia para los desarrolladores de hoy (ver https://db-engines.com/en/ranking).

En Panama Hitek ya hemos escrito sobre el uso de MySQL con aplicaciones en Java:

Hasta ahora hemos explorado la conexión de aplicaciones Java a MySQL utilizando el driver JDBC. Esta es una librería diseñada para Java que facilita interactuar con las bases de datos MySQL. Sin embargo, este esquema presenta sus desventajas.

El JDBC funciona muy bien con bases de datos locales. Cuando se trabaja con bases de datos remotas, es decir, no instaladas en la computadora, nos encontramos con una serie de inconvenientes. Para usar el JDBC, el servidor remoto debe permitir el acceso a nuestra aplicación en Java, lo cual a veces puede ser tedioso. No es imposible, pero presenta ciertos inconvenientes.

Una opción interesante para compartir información con bases de datos remotas es utilizar Java con PHP. En este artículo explicaremos cómo compartir información entre un script en PHP y una aplicación en Java.

Base de datos de ejemplo

Para este ejemplo utilizaremos una base de datos de prueba. A continuación el código que crea la base de datos:

Creamos una base de datos en MySQL (usando Xampp y PHP MyAdmin).

GARD Pro Not Registered

Ahora hacemos clic en la pestaña que dice SQL, ejecutamos el código y creamos la tabla con la información que usaremos para el ejemplo.

Consola SQL
Creación de clase Users

Para guardar la información obtenida de la base de datos vamos a crear una clase (Java Class) llamada Users. Esta clase contará con los siguientes atributos:

  • id: ID de la tabla
  • name: nombre de la persona
  • lastName: apellido de la persona
  • birthdate: cumpleaños de la persona
  • gender: género de la persona

El código que crea esta clase lo tenemos disponible en nuestro repositorio en Github.

GARD Pro Not Registered
Código de la clase User
Scripts en PHP

Para interactuar con la base de datos se necesitan scripts en PHP. Estos son los encargados de hacer las consultas a la base de datos y comunicar la información a la aplicación en Java.

Para obtener la información desde la base de datos usaremos un script al que llamaremos getInfo.php. El código de este script se encuentra disponible en nuestro repositorio de Github.

Script en PHP para extraer información de la base de datos

También es necesario utilizar un script para insertar la información en la base de datos. A este script lo llamaremos saveInfo.php. El código de este script también se encuentra disponible en nuestro repositorio de Github.

Script en PHP para la inserción de datos en la base de datos

Estos scripts necesitan instalarse en un servidor web. Este tema ya fue expuesto en el post montaje de un servidor Apache en nuestra PC.

De esta forma, cuando accedemos al script getInfo.php desde un navegador web, veremos el siguiente resultado.

Resultado de la ejecución del Script getInfo.php en un navegador web
Enlazando Java con PHP

La programación en Java consiste en compartir información con los scripts en PHP. Se ha diseñado una clase (Java Class) llamada PHPClass donde se encuentran los métodos necesarios para insertar y extraer la información. Estos métodos utilizan la clase User para empaquetar la información extraída en un objeto almacenado en la memoria dinámica, de tal forma que se pueda acceder a la información en cualquier momento.

Los métodos de la clase PHPClass son:

  • getInfo() devuelve una lista de objetos de la clase User (Java Object), donde cada objeto representa un registro de la tabla users_list en la base de datos. Cada objeto contiene los valores de las columnas empaquetados en su interior.
  • saveInfo(User user) guarda la información en la base de datos. La información que será guardada se le “pasa” al método a través de un objeto de la clase user.
  • getJSON() obtiene un JSON a partir del script getInfo.php

Estos métodos requieren del uso de la librería JSON-Simple (Java API), la cual pueden agregar al proyecto utilizando Maven. Para ello se agrega las siguientes instrucciones al archivo pom.xml:

GARD Pro Not Registered
Si no utilizan Maven, pueden buscar la librería en Google y descargarla. Para probar el funcionamiento de este código usamos la clase MainClass, cuyo código compartimos a continuación.

Este código almacena un dato en la tabla users_list y luego imprime todos y cada uno de los registros almacenados.

Para la impresión de los datos se usa una expresión lambda, propia de Java8 que permite recorrer la lista devuelta por el método getInfo() de la clase PHPClass. Los resultados son mostrados en la consola:

Java con PHP
Salida de la consola al ejecutar el código de la clase MainClass

Los archivos que le dan funcionalidad a este proyecto se encuentran en nuestro repositorio de Github, cuyo enlace es el siguiente:

https://github.com/PanamaHitek/java_post_examples.git

GARD Pro Not Registered

Esperamos que la información presentada sea de utilidad para ustedes. Saludos.