Está en la página 1de 40

 

Conexión a BD con Java 


Fecha: 03/11/2020 

Instalación servidor de base de datos 


● Para esta guía utilizaremos MySQL1 como motor de base de datos. Para mayor 
facilidad realizaremos la instalación de una distribución de WampServer2, pero 
quien lo desee puede realizar la instalación del servidor de MySQL solamente. 

1
Es un sistema de gestión de bases de datos relacional desarrollado bajo licencia dual (Licencia pública 
general/Licencia comercial por Oracle Corporation) y está considerada como la base datos de código 
abierto más popular del mundo. https://www.mysql.com/ 
2
Se refiere a un stack de software que se despliega sobre SO Windows creado por Romain Bourdon y que 
consta del servidor web Apache , OpenSSL para soporte SSL, base de datos MySQL y lenguaje de 
programación PHP. http://www.wampserver.com/en/ 

 

 

Problema 
Se  desea  implementar  un  sistema  de  información  para  el  registro  de  los  trabajos  de 
grado  de  los  estudiantes  de  la  carrera  de  Ingeniería  de  Minas.  Actualmente  los 
estudiantes  tienen  varios  tipos de modalidades para poder graduarse como profesional 
(trabajo  de  grado,  pasantía,  trabajo  dirigido  y  curso  de  profundización).  Cuando  el 
estudiante  desea  graduarse  con  la  modalidad  de  trabajo  de  grado,  pasantía  y  trabajo 
dirigido  debe  presentar  una  propuesta  o  anteproyecto  la  cual  debe  contemplar  el 
problema  o  situación  sobre  la  que  desea  trabajar.  La presentación del anteproyecto se 
realiza  según  unas  fechas  definidas  por  el  comité  del  programa.  Una propuesta puede 
ser  presentada  por  más  de  un  estudiante  y  es  importante  llevar  registro  de  las  fechas 
de  inicio  y  tiempo  en  los  cuales  se  realizará  la  propuesta,  para  determinar  si  el 
estudiante  ha  cumplido  o  se  encuentra  atrasado  en  el  desarrollo  de  su  trabajo.  La 
propuesta  también  debe contar con un director, el cual en la mayoría de los casos es un 
docente de la Universidad, pero que puede ser también externo a la institución. 

En el comité se deben asignar tres jurados para que evalúen el anteproyecto, para poder 
evaluar  tienen  que  tener  unas  fechas  definidas  como  límite.  Cada  jurado  puede  hacer 
unas  unas  recomendaciones,  poner  una  nota  de  0  a  5  y  definir  si  se  deben  aprobar, 
rechazar o aprobar con correcciones. 

Después  de  aprobado  el  anteproyecto  los  estudiantes deben desarrollar su propuesta y 


realizar  la  entrega  del  documento  final  al  comité  para  que  se  asignen  los  tres  jurados, 
los  cuales  deben  realizar  la  evaluación  del  trabajo  y  de  la  sustentación,  asignando  una 
nota y definiendo si aprueba, reprueba o debe volver a presentar sustentación. 

Se tiene el siguiente modelo relacional que intenta representar el ejercicio propuesto: 

 

 

El  anterior  modelo  relacional debe ser llevado a un modelo de datos e implementado en 


MySQL o PostgreSQL. 

Implementando la BD en MySQL 
Se debe implementar la base de datos para lo que puedes utilizar la aplicación 
PHPMyAdmin a través de la dirección ​http://localhost/​. Por defecto el usuario y clave es 
root y vacío. 

Se debe crear la base de datos a traves de 


PHPMyAdmin o utilizando la sentencia:  

CREATE​ ​DATABAS​E​ ​proyecto

Para la creación de nuestra primera tabla se utiliza la siguiente sentencia:

 

 

CREATE​ ​TABLE​ ​proyecto.carrera​ ( c


​ odigo​ ​VARCHAR​(​3​) ​NOT​ ​NULL​ , ​nombre ​VARCHAR​(​80​) ​NOT​ ​NULL​ , ​creditos
INT​(​3​) ​NOT​ ​NULL​ , ​semestre​ ​INT​(2 ​ OT​ ​NULL​, ​PRIMARY​ ​KEY​ (​codigo​)) ​ENGINE​ = ​InnoDB​; 
​ ​) N

La siguiente imagen muestra la creación de la tabla a través del PHPMyAdmin. 

Para insertar un registro en la nueva tabla se utiliza la sentencia: 

INSERT​ ​INTO​ ​carrera​ (​codigo​, ​nombre​, ​creditos​, ​semestre​) ​VALUES​(​'118'​, ​'Ingeniería de Minas'​, ​'155'​, ​'10'​)

Se debe realizar todas las tablas del modelo de datos definido anteriormente. 

Implementando Patrón DAO 


Repositorio: ​https://github.com/carlosreneas/proyectomodel 

Inicialmente se debe crear el proyecto de java 


como se observa en la imagen. Este proyecto Este 
proyecto es de tipo Java Project y sobre él vamos a 
implementar todo el proceso de consulta sobre la 
base de datos. 

Después de creado el proyecto se van a realizar 


tres paquetes: 

- entities: que contiene todos los objetos VO. 


- services: que contiene todas las clases DAO. 
- util: que contiene las clases de utilidad. 

 

 

Sobre el paquete entities se deben crear todos los objetos VO. Inicialmente crearemos 
la clase Carrera con los respectivos atributos (codigo, nombre, creditos, semestres). 

A continuación se observa la clase Carrera con la estructura en Java. Cuando se 


trabaje con tecnología Web se deben tener clases serializadas, utilizando la interfaz 
Serializable. 

 

 

En el paquete services se deben implementar los distintos métodos que permitan 


insertar, actualizar, eliminar, consultar y listar los objetos, para este caso objetos de la 
clase Carrera. 

 

 

Importar Librerías 
Para poder conectar con MySQL debemos utilizar las librerías JDBC y realizar la 
importación de las mismas al proyecto.   

Importamos la librería necesaria, para este caso el JDBC de MySQL, haciendo clic en 
Add External JARS. 

Conversión Proyecto a Maven 


Para poder utilizar MAVEN como sistema de resolución de dependencias se debe 
realizar la conversión. 

 

 

Maven genera un archivo POM.XML, sobre el cual debo agregar las dependencias que 
va a resolver. 

Si no se cual es la dependencia que necesito puedo acceder a algún repositorio de 


MAVEN y buscarla: 

 

 

Adicional se deben buscar y agregar el resto de dependencias necesarias. 

¿Que definen los elementos groupId, artifactId y version en una dependencia? 

Importar Proyecto a Eclipse desde Github 


Github3 es un sistema de control de repositorios que utiliza la herramienta de control de 
versiones Git. ¿Que otras plataformas y herramientas de control de versiones existen? 

3
https://github.com/ 

 
10 
 

Git es una de las herramientas más utilizadas para el control de versiones y varias 
empresas han creado sistemas de control de repositorios: 

Puedes ver un comparativo de las herramientas en la dirección de la imagen: 


https://medium.com/flow-ci/github-vs-bitbucket-vs-gitlab-vs-coding-7cf2b43888a1 

Para este proyecto como se dijo al principio del documento utilizaremos GitHub, y este 
es el repositorio: ​https://github.com/carlosreneas/proyectomodel​. 

Vamos a proceder a importarlo en Eclipse. Para esto utilizamos la opción de importar 


en el file de Eclipse: 

 
11 
 

Luego se debe digitar la dirección del repositorio: 

 
12 
 

El siguiente paso es definir si el 


proyecto se importará en un 
proyecto existente, uno nuevo o 
un proyecto general. 

Se puede presentar un error en 


el sistema pero finalmente el 
sistema realiza la importación 
del repositorio. 

 
13 
 

En este punto así el sistema 


genere el error el proyecto se 
descargó desde Github y 
puede importarlo a través de 
abrir proyecto a partir de 
archivos.   

 
Después de importado el proyecto se debe realizar la conversión del proyecto a Maven. 

Java Persistence API 

 
14 
 

JPA4 es una especificación creada para realizar el mapeo entre los objetos y las bases 
de datos, por esta razón hablamos de ORM - Object Relation Mapping. 

En la actualidad existen varios proveedor con implementaciones JPA como lo son los 
siguientes: 

● Hibernate 
● ObjectDB 
● TopLink 
● EclipseLink 
● OpenJPA 

Para crear un proyecto JPA desde Eclipse se debe crear un proyecto de este estilo: 

Se debe configurar el nombre del proyecto y las propiedades de creación: 

En target 
runtime no es 
obligatorio 
seleccionar 
un servidor 
web de 
contenedores 
ya que en este 
proyecto solo 
trabajaremos 
la capa de 
persistencia. 
Seguimos con 

4
 
https://www.ibm.com/support/knowledgecenter/es/SSAW57_liberty/com.ibm.websphere.wlp.nd.multipl
atform.doc/ae/cwlp_jpa.html 

 
15 
 
el siguiente del asistente hasta llegar a la ventana de configuración de JPA. 

En esta parte 
contamos 
con la 
plataforma 
que puede 
desde el 
generico 
hasta 
Hibernate. 
Adicional la 
conexión. Si 
no tienen 
conexión 
registrada la 
pueden 
agregar. 

Si no hay conexiones se puede agregar una a través de la siguiente interfaz: 

 
16 
 

Al seleccionar la base de datos se carga la interfaz: 

 
17 
 

Si el Driver no existe se puede crear . Se debe seleccionar la versión del driver: 

Se debe eliminar el JAR cargado y agregar la ubicación de tu archivo JDBC de la base 


de datos seleccionada, para este caso es MySQL: 

Finalmente aceptamos y cambiamos los datos de la base de datos que se creo 


inicialmente: 

 
18 
 

No se debe 
olvidar el 
testear la 
conexión a 
la base de 
datos. 

Y finalizamos la creación del proyecto, a lo cual si no hay error el sistema pregunta si 
queremos cambiar de perspectiva: 

El proyecto creado muestra las siguientes estructuras: 

 
19 
 

Ahora se debe convertir el proyecto a MAVEN, como se explicó en secciones anteriores. 

Para este proyecto JPA se deben agregar las siguientes dependencias: 

Para agregar las dependencias de MAVEN se pueden buscar en la página o agregarlas 


desde Dependencies si ya fueron agregadas en algún proyecto con anterioridad. 

Ajustar el archivo persistence.xml 


Este archivo debe tener varias etiquetas correspondientes a la conexión y al dialecto: 

 
20 
 

Los primeros valores corresponden a la conexión con la base de datos, y el dialecto es 
el lenguaje con el que se comunicara el JPA. 

En la vista properties se puede ver así: 

Generar entidades desde la base de datos 

 
21 
 

Se debe seleccionar las tablas a mapear 

Al hacer clic en siguiente muestra las asociaciones entre tablas 

 
22 
 

se pueden agregar o no generar asociaciones, asi como definir los nombre de las 
propiedades. 

En la ventana siguiente se debe definir la forma de generacion de primarias, el tipo de 


relacion, si es Eager o Lazy. ¿Cual es la diferencia? 

 
23 
 

Hago clic en Siguiente si deseo hacer customizacion individual o Finalizar si deseo 


generarlas todas. 

Para este caso la tabla proyecto es autoincremental: 

 
24 
 

Finalmente se generan las entidades: 

La entidad Proyecto se puede observar 

 
25 
 

Hay varios anotaciones importantes dentro de las entidades: 

● @Entity: ​anotación para definir una entidad 


● @Id: ​anotación para definir la llave primaria 
● @GeneratedValue: ​anotación para definir que es autoincremental 
● @Temporal: ​anotación para definir que es fecha 

¿Como se define una clase en la que la entidad no tiene el mismo nombre que la tabla? 

● @Table: p ​ ermite definir entre otras cosas el nombre de la tabla que corresponde 
a la clase 
● @Column: p
​ ermite definir el nombre la columna de la tabla 

Creando el archivo de Conexión a la Base de Datos 


Para poder realizar la conexión a la base de datos se debe utilizar un patrón singleton, 
que permita mantener una única conexión. Para esto creamos una clase Conexion e 
incluimos una variable estática nombrada ​em​. 

 
26 
 

Para continuar con la aplicación del patrón Singleton se crea un método getEm, el cual 
retorna la entidad em creada o la inicializa, esto garantiza que solo pueda haber un 
Entity Manager conectado en nuestra aplicación. 

xxxx ​corresponde a la unidad de persistencia creada, la cual pueden encontrar en el 


archivo ​persistence.xml​. 

Adicional se debe crear el constructor de la clase Conexion: 

Adicional se puede implementar en la clase Conexion todos los métodos CRUD 


utilizando clases genéricas. Para esto se debe ajustar la clase Conexion para recibir la 
clase genérica, e incluir una variable de esta Clase. 

Se debe implementar un nuevo constructor que reciba la clase genérica. 

Se debe implementar un método modificador para asociar la clase genérica. 

 
27 
 

Método Buscar (find) 


Este método permite buscar un objeto de la clase genérica, recibiendo la una dato que 
corresponde al Id de la instancia. 

Método Listar (list) 


Este método permite consultar todos los objetos y le retorna en una lista genérica de 
objetos. 

Método Insertar (insert) 


Este método permite registrar un objeto de la clase genérica. El objeto es recibido por 
la clase y persistido en la base de datos. 

 
28 
 

Método Actualizar (update) 


Este método permite actualizar el objeto de la clase genérica. El objeto es recibido por 
la clase y actualizado en la base de datos. 

Método Eliminar (delete) 


Este método permite eliminar el objeto de la clase genérica. El objeto es recibido por la 
clase y eliminado de la base de datos. 

 
29 
 

Implementando el patrón DAO Genérico con JPA 


Para la implementación de este patrón se deben crear la clase DAO para cada entidad, 
para esto comenzaremos creando la clase CarreraDAO. Cada clase de acceso a datos 
debe contar con las operaciones básicas de CRUD (Create, Read, Update y Delete). 

Antes de implementar la clase DAO se debe crear una clase interface llamada 
GenericDAO, que defina los métodos de listar, buscar, insertar, actualizar y eliminar. 

Luego de implementar se deben utilizar estas clases como se observa en la siguiente 


imagen, donde se realiza la implementación de la clase CarreraDao. Como se observa 
solo se debe extender de la clase Conexion y la clase GenericDao, pasando la clase a la 
cual corresponde el Dao: 

 
30 
 

Esto debe realizarse para todas las clases Dao que deseen acceder a la base de datos. 
Adicional se deben realizar todas las pruebas correspondientes del funcionamiento de 
las clases Dao. 

Utilizando el Modelo de 


Datos 
Se puede utilizar el modelo de datos desde un proyecto Web que utilice patrón MVC. Lo 
primero que se debe hacer es crear un proyecto web dinámico: 

Al hacer clic Dynamic Web Project se puede ver la interfaz de creación del proyecto: 

 
31 
 

Se debe dar un nombre al proyecto y se debe definir el servidor de aplicaciones sobre el 
que se desplegará la aplicación. 

Hay diversos servidores que se pueden utilizar para el despliegue. Se debe tener en 
cuenta que el servidor debe contar con un microcontenedor de servlets. Algunos 
servidores de este tipo son: 

Nombre  Descripción 

Apache Tomcat   

GlassFish   

Jboss EAP   

Oracle Web Logic   

 
32 
 

Jetty   

IBM WebSphere   
Application Server 

En este proyecto se debe vincular el código de proyecto de persistencia desarrollado 


anteriormente, a través de la opción: 

Luego se debe hacer clic en la opción de Link Source: 

Allí se debe buscar la carpeta src del proyecto en el cual tenemos todas las clases de la 
persistencia: 

 
33 
 

Se debe cambiar el nombre de la carpeta de ​src ​a m


​ odel​. 

El resultado final es el que se observa en la imagen: 

El siguiente paso es convertir el proyecto a MAVEN y asociar las dependencias 


necesarias. Si tiene algún error se debe actualizar el proyecto. 

Ahora se debe desarrollar la estructura de la aplicación basado en el patrón MVC 


(Modelo Vista Controlador), para lo cual se debe crear un paquete controller para los 
controladores de la aplicación. 

Ahora se debe crear el controlador de carrera llamado CarreraController. Un 


controlador es una clase tipo Servlet, la cual se debe extender de la clase HttpServlet. 

 
34 
 

Algo importante es definir la URL Mappings, la cual determina con qué dirección se 
podrá acceder a la clase. 

Finalmente se deben definir los métodos a implementar. Generalmente se agregan los 


métodos doPost para las peticiones POST y doGet para las peticiones GET. 

Finalmente se muestra la clase heredando de la clase HttpServlet 

 
35 
 

Hay dos objetos importantes en el servlet: 

● HttpServletRequest:​ corresponde a la petición que se realiza al servlet. 


● HttpServletResponse:​ corresponde a la respuesta que envía el servlet. 

Obteniendo datos a través del Servlet 


Para obtener los datos se debe utilizar la petición request, a través del método 
getParameter. 

Insertando datos a través de los métodos de Persistencia 


Ahora se debe crear la instancia del objeto Carrera con los datos recibidos 

 
36 
 

Ahora vamos a realizar la inserción de los datos a través de la clase CarreraDao. 

Al desplegar el proyecto se puede proceder a registrar la carrera.  

Redireccionando el control de la página 


Para redireccionar la petición a otra página debemos utilizar la clase Dispatcher. 

El RequestDispatcher es usado para enviar el control a la página invocada. 

Incluyendo Java Server Tag Library 


Que es JSTL 

Para este ejercicio se debe crear un 


archivo JSP llamado carreraList.jsp. En 
este archivo se propone implementar en 
HTML una tabla con 4 columnas con la 
informaciòn de la carrera. 

El siguiente paso es importar las etiquetas JSTL a través de la siguiente etiqueta en 
nuestro archivo JSP 

 
37 
 

Como pueden observar el prefijo c sera utilizado para hacer llamado a todas las 
etiquetas de JSTL. 

Para que esta etiqueta funcione debemos importar la dependencia de JSTL a Maven 
agregando la dependencia al ​pom.xml​: 

Ahora vamos a crear una instancia de la clase CarreraDao en nuestra página JSP a 
través de la etiqueta useBean: 

Esta etiqueta permite instanciar un objeto de la clase CarreraDao con nombre cDao. del 
siguiente paso es utilizar las etiquetas JSTL forEach y out. A continuaciòn hay algunas 
etiquetas adicionales: 
Etiqueta Descripción

<c:out> Para la visualización de los datos en un JSP, como <% = ...>

<c:set> Para el almacenamiento de datos

<c:extraer> Para la eliminación de datos

<c:catch> Para hacer frente a condición de excepción de error, y un


almacén de mensajes de error

<c:if> Y si estamos en el mismo procedimiento general que se usa

<c:choose> Sí sólo como <c: when> y <c: otherwise> marca para padres

 
38 
 

<c:when> <C: choose> pestaña secundaria se utiliza para determinar si las


condiciones establecidas

<c:import> Recuperando una URL absoluta o relativa y, a continuación, se


expone a la página de contenidos

<c:forEach> base etiqueta iterativo, aceptar una variedad de tipos de


colección

<c:param> Se utiliza para contener o redirigir la página para pasar


parámetros

<c:url> Utilice los parámetros de consulta opcionales para crear una URL

El resultado final de la tabla incluyendo las etiquetas JSTL sería el siguiente: 

El resultado final de la tabla sin estilo sería el siguiente: 

 
39 
 

Edición de  

Para la carga del archivo se debe pasar el id por get 

Para realizar la edición se debe colocar lo siguiente en el POST. 

 
40 
 

También podría gustarte