Está en la página 1de 31

Curso Hibernate y Spring

Modulo 1: Bienvenida e Introduccion


Video 1: Instalar ambiente de desarrollo en windows
- Vamos a instalar omniDB
- Vamos a instalar Docker para windows pero la version Docker toolbox

Video 3: Que es una aplicacion empresarial

Video 4: Como funcionan las aplicaciones web

- La primera capa es el navegador, el segundo es el servidor y el tercero es la base de


datos
- las ventajas es Facil de instalar y actualizar, Ahorro de recursos y dispositivos,
independiente del sistema operativo, soporte de multiple usuarios concurrentes y
acceso a múltiples dispositivos
Video 5: Servidores Web vs Servidores de aplicaciones
Video 7: Patron de Arquitectura MVC

- El Modelo: Clases Mapeadas que representan tablas de la base de datos


- El Negocio/controlador: Clases que representan el negocio propiamente
- El Vista: Clases, archivos relacionados que representan UI con las que interactua el
usuario
Video 8: Características de los Servlet

- Un ejemplo de un Servlet seria cuando un usario hace una peticion al servidor y el


que se va a encargar de procesar dicha peticion es el Servlet y no es mas que una
clase que solo funciona en el servidor, una vez que procese una peticion se va a
encargar de generar contenido dinamico en base a esas peticiones
- En el HttpServlet manejamos las peticiones con GET y POST
- Hay dos tipos de proyectos que son estaticos, por ejemplo portales web, CMS, etc. o
dinamicos y son aplicaciones transaccionales que en base a las peticiones se genera
un contenido y se procesa esa informacion
- en eclipse vamos a dar ctrl + n y luego escogemos el que dice Dynamic web project
- Luego colocamos el nombre
- En el Target runtime lo dejamos sin nada
- Dejamos el resto como esta excepto la version que es 3.0 y next
- Damos click next y otra vez next pero antes damos click en checkobox que dice
Generate web.xml deployment descriptor
- por ultimo un finish
- Vamos a google y buscamos tomcat y seleccionamos el primer resultado
- Luego elegimos Tomcat 9
- Luego seleccionamos core - zip
- Vamos a ir a windows - show view - other - package explorer
- Vamos a crear un paquete dentro de src de nombre com.platzi.platziweb.servlet
- Luego dentro de ese paquete vamos a crear un servlet y en class name vamos a
colocar ServletLogin
- Colocamos una description
- Por ultimo finish

Video 9: Utilizacion de Servlet


- Vamos a descomprimir el archivo zip de tomcat
- Luego en el eclipe vamos a windows - show view - Servers
- Damos click al mensaje que aparece en Servers
- Luego elegimos Apache Tomcat 9
- En Server Name colocamos Tomcat v9.0
- Luego buscamos la carpeta descomprimida de Tomcat
- seleccionamos el JDK
- luego damos click en Finish
- Damos click derecho en el proyecto luego propiedades
- Luego buscamos Targeted Runtimes luego seleccionamos el Tomcat y listo
- Nuestro servidor de tomcat va a correr de manera embebida y para cambiar eso,
vamos a ir a Servers, damos click derecho en el servidor, escogemos properties y
damos click en Switch Location y debe aparecer /Servers/Tomcat v9.0.server
- Damos click a Tomcat del Server y seleccionamos el que dice Use Tomcat
Installation…
- Luego donde dice Deploy path seleccionamos el webapps que tiene tomcat en su
archivo que descomprimimos
- Luego dentro del metodo doGet de la clase ServerLogin.java vamos a colocar este
codigo:

- Luego en la seccion Servers damos click derecho a Tomcat y seleccionamos el Add


and Remove y añadimos nuestro proyecto al servidor, luego lo corremos ay mismo
dando click en la flecha verde
- Si queremos ver el resultado debemos de colocar esto:
localhost:8080/platziweb/ServletLogin?usuario=andrew&empresa=Platzi

- El caracter & sirve para concatenar en una URL

Video 10: Caracteristicas y practica de JSP

- damos click derecho en la carpeta principal del proyecto y buscamos JSP File
- estos caracteres <% %> se les llama Directivas
- Dentro del body vamos a colocar este codigo:
- Para crear comentario es asì <%-- Comentario cualquiera --%>
- Para crear variables es asì <%! int i = 0 %>
- el punto que esta antes de /ServletLogin dentro de action= indica que coloque toda
la url original y despues si coloque el /ServletLogin es decir que el punto equivale a
esto localhost:8080/platziweb
- Luego en el navegador para ver el formulario colocamos esto:

localhost:8080/platziweb/login.jsp

Modulo 2: Comenzar con Spring Boot


Video 1: Arquitectura de las aplicaciones web
- Son requerimientos, diseño casa, casa terminada esto para una casa
- Para una web es requerimientos, diseño aplicacion, aplicacion terminada
Video 2: Caracteristicas de spring framework
Video 3: Caracteristicas de spring Boot
Video 4: Crear, cargar y configurar una aplicacion en Spring Boot
- En este curso vamos a contruir un proyecto y es la reserva de un hotel
- Podemos usar la herramienta start.spring.io
- La configuraciòn va a ser esta:

- Para importar el proyecto damos click derecho en Package Explorer y seleccionamos


import, despues existin maven project ya que nuestro proyecto lo creamos con
maven
- Vamos a correr la app y para eso damos click derecho en el proyecto y luego
escogemos run as - 3 maven build
- en el Goals vamos a colocar clean install spring-boot:run
- Luego en apply y finish

Video 5: Crear la estructura del proyecto


- Vamos a usar el MVC en nuestro proyecto
- Vamos a crear un nuevo paquete dentro del paquete que ya se creo por defecto y va
hacer de nombre com.platzi.ereservation.model
- luego vamos a crear tres paquetes mas com.platzi.ereservation.repository,
com.platzi.ereservation.resources y com.platzi.ereservation.services

Modulo 3: Spring Data JPA


Video 1: Persistencia de objetos

Video 2: Spring Data, Spring Data JPA


- Provee una manera facil de implementar la capa de acceso a datos utilizando la
especificacion de JPA.
- En pocas palabras con Spring Data JPA realizamos ciertos proceso mas facil que el
JPA puro sin embargo debemos usar el contexto de JPA
Video 3: Iniciar la base de datos postgresql utilizando docker
- El comando pull es para vajar la imagen de postgresql que esta en Docker
- El otro comando sirve para ejecutar la imagen y se creara el contenedor
- Luego vamos a usar el comando docker -v para saber la version y se va a trabajar con
la version 18.09.0
- Luego el comando docker images para ver las imagenes que hay en el equipo y el
docker ps -a para ver los contenedores que hay
- Luego hacemos el comando pull
- Vamos a ejecutar el comando run para crear el contenedor
- Luego iniciamos OmniDB y seleccionamos Connections y luego en New Connections
y colocamos estos datos:

- Damos click al boton Save y luego al dar click al boton de el chulo verde nos va a
pedir una contraseña y colocamos la contraseña que configuramos en el comando
run de docker
- si queremos de dejar de usar la base de datos colocamos docker stop postgres y si
queremos que inice otra ve es con docker restart postgres

Video 4: Optimizar Pojos con Lombok


- Vamos a ir a la pagina projectlombok.org
- Luego vamos a Download
- Vamos a pegar ese archivo descargado o mas bien el lombok.jar dentro de la
carpetas de eclipse
- luego buscamos el que dice SpringToolSuite4.ini y dentro usando el vim o cualquier
editor colocamos otra linea asì:

-javaagent:larutadondeestalombok/lombok.jar

- Despues salimos de Eclipse y volvemos a entrar


- Luego abrimos el pom.xml y colocamos la dependencia de lombok asì:

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
<scope>provided</scope> //este sirve solo para construccion del proyecto pero
no va a ir empaquetado dentro del proyecto para produccion
</dependency>

- Luego damos un click derecho al proyecto y damos luego click en Maven - Update
Project
- Luego los paquete de services y repository vamos a modificar su nombre para eso
damos un click derecho a los paquetes y damos click despues en Refactor - rename y
despues colocamos com.platzi.ereservation.model.repository y hacemos lo mismo
con Service
- En el Resources hacemos lo mismo y lo renombramos asì
com.platzi.ereservation.vista.resources
- En el paquete de modelo vamos a crear una clase de nombre Cliente y marcamos la
casilla de Generate coments
- Ponemos un comentario que dice Esta clase representa la tabla cliente
- Luego colocamos este codigo:
- El anotador @Data es de Pojo y sirve para que no tengamos que crear los Setter y
Getter

Video 5: Mapear Tablas de la base de datos


- Vamos a mapear la base de datos a clases
- Vamos a colocar las dependencias de JPA en pom.xml, asì:

- Luego debemos es actualizar el Maven


- Entonces vamos a mejorar la clase Cliente y queda asì:
- La tabla cuando se pasa a el proceso de ORM se comvierte en una Clase, las
columnas de la tabla se transformar en atributos y las relacion de las tablas se
convierten en atributos que pueden ser un Objeto o una lista de Objetos

- El @Entity permite que la clase represente la tabla de la base de datos


- Cuando la relacion es de uno se coloca en un Objeto y cuando la relacion es de
muchos se coloca en una Coleccion
- Entonces con el Set<> creamos una coleccion ya que un cliente puede tener muchas
reservas
- En JPA la cardinalidad es bidireccional es decir si se mapea en una clase se debe
mapear por oblicacion en la otra clase, es decir si yo realizo la relacion en la clase
Cliente la tengo que hacer por obligacion en la clase Reserva
- Vamos a crear dentro del paquete Modelo la clase Reserva y marcamos la casilla de
Generate coments y colocamos este codigo:
Video 6: Configurar la persistencia con Hibernate
- Vamos a configurar el Data Source y para eso nos dirigimos al archivo
application.properties
- Sin embargo vamos a usar algo diferentes y es crear un File de nombre
application.yaml y va a estar asì:

- Por ultimo corremos el proyecto en Run As - 3 Maven Build


- SI nos vamos a nuestra base de datos ya vemos que se crearon las dos tablas que son
Cliente y Reserva y esa creacion se logro gracias a la configuracion del archivo de
persistencia que es el application.yaml
Modulo 4: Manejo de Negocio
Video 1: Añadir JPA Repository

- Dentro del paquete repository vamos a crear una interfaz IClienteRepository


- La interfaz va hacer esta:

- Los parametros de JpaRepository van hacer primero la tabla que es en este caso
Cliente y segundo el identificador o ID que es de tipo String
- No hay necesidad de crear los metodos de CRUD porque el JpaRepository ya los trae
pero nosotros podemos crear metodos tambien
- Vamos a crear la interfaz de IReservaRepository y es lo mismo que en el otro
Video 2: Implementar las operaciones de consulta con JPA Repository

- Vamos a realizar las 3 formas de generar las consultas


1. Consultas generales o nomal:
- Es usar la palabra reservada findBy asì:

2. Consultas con JPQL:


- Es solo usar la anotación @NamedQuery asì:

- SI nosotro queremos hacer una consulta general por el nombre es asì


findByApellidoCli(String apellidoCli) pero su pongamos que quiero hacer una
consulta de varios parametros debo usar un And por cada parametro por ejemplo
findByApellidoCliAndNombreCli(String apellidoCli, String nombreCli) y esto va
hacer muy poco limpio entonces para solucionar esto es con otra opcion de consulta
que nos permite personalizar nuestra consulta
- Vamos a trabajar en el ejemplo con la interfaz IReservaRepository y creamos esta
consulta asì:

- Por ultimo debemos de agregar una anotaciones en los atributos de fecha de la clase
Reserva y es para dar formato a la fecha asì:
Video 3: Implementar servicios de negocio para las operaciones CRUD

- Vamos al paquete Service y creamos una clase de nombre ClientService


- Dentro de esa clase vamos a colocar esto:
Video 4: Manejar la transaccionalidad de un servicio de negocio

- En la clase ClienteService vamos a colocar la anotacion @Transactional a los


metodos create, update y delete
- Encima de la clase ClienteService debemos de colocar esto
@Transactional(readOnly = true) y sirve para que todos los metodos que no esten
con el @Transactional van a ser tratados solo con el modo lectura, sin embargo no
es tan conveniente colocarlo a nivel de clase por eso es conveniente colocarlo solo
en el metodo que va hacer de lectura
Modulo 5: Sring Rest
Video 1: instalar y configurar Swagger
- Nos dirigimos al pom.xml y colocamos esta configuracion para swagger
- Vamos a crear un nuevo paquete de nombre com.platzi.ereservation.util y dentro
de ese paquete creamos una clase de nombre SwaggerConfiguration.java y
colocamos este codigo:

- Despues vamos a compilar Run As - 3 Maven build


- Si aparece que el puerto 8080 esta usado podemos sencillamente mirar si el
cuadrado rojo esta activo y sencillamente solo lo apagamos

Video 2: Caracteristicas de los Servicios Web y Spring Rest


- En el paquete de resources vamos a crear una clase de nombre ClienteResources y
colocamos este codigo

Video 3: Implementar las operaciones REST para crear y actualizar informacion


- Vamos a crear un nuevo paquete de nombre com.platzi.ereservation.resources.dto
que nos permite mapear los objetos de JPA a un nuevo objeto para la API, ya que no
podemos pasar en el servicio wen nuestra Clase de JPA o la que se paso de Tabla a
Clase, ya que que si pasamos la clase que seria Cliente vamos a pasar toda su
informacion e incluso sus relaciones y no queremos eso, por eso cada vez que
usamos servcios web toca usar DTO
- Dentro de ese paquete nuevo vamos a crear una clase de nombre ClienteDto y
contiene este codigo:

- En la clase ClienteResources vamos hacer esta modificaciones a nuestra clase asì:

- El VO es igual a DTO

Video 4: Implementar las operaciones REST para eliminar y consultar


- Vamos a crear los metodos de Delete y FindAll asì:

- En la clase ClienteService vamos a el metodo findAll() asì:

Video 5: Documentaciòn de los servicios REST con Swagger


- Encima de la clase ClienteResource vamos a colocar esta anotaciòn @Api(tags =
“cliente”)
- En el metodo createCliente() debemos agregar estas anotaciones para Swagger
asì:

- En el metodo updateCliente() tambien debemos de agregar estas anotaciones asì:


- En el metodo removeCliente() es asì:

- Por ultimo el metodo findAll() asì:

- Por ultimo debemos de compilar Run As - 3 maven build


- Luego vamos a esta URL localhost:8080/swagger-ui.html en el navegador

Modulo 6: Spring Security


Video 1: Manejar la seguridad en una aplicación web

Vide 2: Caracteristicas, intalacion e integracion de Spring Security


- Vamos a ir a nuestro archivo pom.xml para instalar la dependencia de Spring
Security y es asì:

- Luegos nos vamos a la clase principal de Java y debemos de modificar su anotador


asì:

@SpringBootApplication(exclude = {SecurityAutoConfiguration.class})

- En el paquete de .util vamos a crear una nueva clase de nombre BasicConfiguration


y vamos a colocar este codigo:

- Si lo dejamos así se van a crear el formulario con las credenciales por defecto y toca
cambiar eso así que vamos a ir al archivo application.properties y es esto:

- Luego compilamos y listo podemos ir a localhost:8080 para ver el login

Video 3: Personalizar la pagina de login

Modulo 7: Despliegue Aplicaciones Docker


Video 1: Realizar la configuarcion de Docker Plugin

- Vamos a ir al pom.xml y agregamos un plugin de nombre io.fabric8 así:

Video 2: Crear una imagen docker de la aplicacion


- Vamos a crear un nuevo archivo de nombre application-prod.yaml y ese archivo
prod es el que configuramos en <entryPoint> de nuestro pom.xml
- Dentro del archivo application-prod.yaml vamos a colocar este codigo:
- Luego vamos a generar una nueva configuration y es en Run as - 4 maven build y
colocamos esta configuracion:

- Luego si damos clikck en Run as - 3 maven build van aparecer las dos
configuraciones y elegimos la que dice docker:build
- Luego abrimos la terminal y miramos si esta la imagen creada docker images

Video 3: Subir la aplicación a docker hub


- Vamos a ir a la terminal y colocar estos pasos:
1. docker login
2. docker push nombre de la imagen
- Luego podemos ir al Docker Hub para ver si esta nuestra imagen

Video 4: Ejecutar la aplicación dockerizada


- Vamos a crear nuestro contenedor con la imagen dockerizada así:

docker run -d --name ereservation --add-host=postgres_server:nuestra ip -p


8080:8080 andrewramirez/e-reservation:latest

- Luego para correr el contenedor es con este comando en la consola:

docker logs -f ereservation

- Solo debemos de colocar el localhost:8080 para ver nuestra Api

También podría gustarte