La mayoría de los proyectos
actuales necesitan guardar o consultar datos de una base de datos relacional,
de esta manera se puede persistir la información de sus usuarios y
del negocio que implementan pudiendo acceder a ella en cualquier momento.
Para conectarse a las
BD las aplicaciones utilizan por lo general drivers, que no son más
que componente que permiten realizar una conexión amigable con la base
de datos de un tipo específico. Algunos de estos tipos pueden ser MSSQL,
MySQL, Oracle, PostgreSQL, etc.
Otro elemento importante
a tener en cuenta es que para realizar operaciones sobre los datos se
necesita de un lenguaje de consultas que permita a los desarrolladores
trabajar con las bases de datos, y en este punto contamos con SQL.
Aquellos desarrolladores
con poca formación o que desconozcan los patrones de diseño existentes
puede ser que comentan el error de mezclar el código de la aplicación
que desarrolla con el código del acceso a los datos y esto puede traer
muchos problemas a corto, mediano y largo plazo. Es por esta razón
que se han propuesto arquitecturas y patrones de diseño que especifican
cual debe ser la forma de diseñar una aplicación y como una aplicación
debe acceder a sus datos. Esto se muestra en las siguientes dos imágenes
a manera de ejemplo.
En esta propuesta de
arquitectura los elementos que son modelos tienen la responsabilidad
de gestionar el acceso a los datos, por lo que el resto de los componentes
que son vistas o controladores no tienen que preocuparse de este asunto.
Fig.2 elementos que componen una arquitectura en 3 Capas.
En este caso la
capa inferior se encarga de contener los componentes de acceso
a los datos y sistemas externos por lo que las capas superiores se abstraen
de estas responsabilidades.
Como pueden ver en las
imágenes en cada propuesta se establece una separación lógica
entre el código de la aplicación y el código del acceso a datos.
Esto hace posible que:
- Se pueda cambiar el tipo de base de datos. Ejemplo pasar de MySQL a PosgreSQL con poco cambio sin afectar el código de la aplicación.
- Se pueda realizar modificaciones en la estructura o diseño base de datos llevando al mínimo los cambios en la aplicación.
Otro elemento a considerar
es cómo se puede combinar la programación Orientada a Objetos donde
todo son clases, objetos y componentes con el acceso a datos donde todo
son consultas estructuradas, tablas y tuplas de datos. En la búsqueda
de una solución a este asunto se llegó a un patrón de diseño conocido
como “Mapeo Objeto Relacional” u ORM por sus siglas en inglés que
establece una relación entre las tablas de una base de datos y las
clases entidades de una aplicación. Para simplificar este patrón diremos
que la solución que propone es tener una clase entidad por cada tabla
de la base de datos a la que queramos acceder. Esta clase y la tabla
se consideran isomorfos o sea, tienen la misma estructura, por cada
columna de la tabla se tendrá un atributo en la clase. Además La clase
contendrá todo el código encargado de manejar las consultas SQL de
forma que el resto de la aplicación no tenga que tratar con consultas
SQL cuando se quiera manejar los datos, este código estará dentro
de los métodos de la clase que se mapearán contra las operaciones
que se deseen realizar sobre la base de datos.
JAVA como lenguaje primero
hizo uso de JDBC para el acceso a las BD. Con esta tecnología se puede:
- Establecer una conexión con la BD, especificando un driver y los parámetros para autenticarse en la BD.
- Usar la conexión establecida para realizar operaciones sobre la BD (seleccionar datos, insertar, modificar, eliminar, etc).
- Procesar los resultados devueltos por las operaciones anteriores.
Esta tecnología tiene
sus limitaciones y ha sido sustituida en proyectos de desarrollo de
aplicaciones empresariales que usan JAVA por una implementación del
patrón ORM que se ha constituido el framework por defecto cuando se
va a desarrollar una aplicación JAVA con acceso a bases de datos relacionales.
Estoy hablando de Hibernate. Si a eso le sumamos el uso
del estándar JPA con anotaciones ya se completa la solución para el
acceso a bases de datos relacionales.
Fig. 3 Ejemplos de frameworks ORM que usan JDBC.
Este es solo una entrada
introductoria a otras que tratarán temas como:
- Uso de Maven para la gestión de dependencias en proyectos JAVA.
- Acceso a bases de datos relacionales con JDBC, Hibernate, JPA, a través de servicios RESTful, etc.
- Uso del Spring Framework, y todos sus componentes, en el desarrollo de aplicaciones JAVA.
- Uso de ZKoss y Vaadin para el desarrollo de la capa de presentación en aplicaciones empresariales.
Excelente info. Gracias
ResponderEliminarGracias por sus cometarios, no dude en contactarnos.
Eliminar