PROGRAMACIÓN
WEB 2
INGENIERÍA INFORMÁTICA
UNIVERSIDAD DE CALDAS
ING. CAROLINA QUINTERO VALENCIA
ARQUITECTURA
FRAMEWORK
Entorno de trabajo o marco de trabajo utilizado por
programadores para desarrollar software, el cual permite
agilizar los procesos de desarrollo ya que evita código
repetitivo asegurando “Buenas prácticas de programación”.
Ventajas
● Ahorra tiempo en la programación ya que contiene el
esqueleto sobre el cual se puede realizar una aplicación.
● Facilita el desarrollo Colaborativo
● Es más fácil encontrar herramientas, módulos e
información para utilizarlo.
● Normalmente existe una comunidad en internet que
ayuda a resolver consultas.
Ejemplos
● .Net: es Framework de Microsoft y uno de los más utilizados.
● Symphony: proyecto PHP de software libre.
● Zend Framework: framework de código abierto para desarrollar
aplicaciones web y con servicios web PHP.
● Laravel: uno de los frameworks de código abierto más fáciles de asimilar
para PHP.
● Django: framework de desarrollo web de código abierto escrito en Python.
● Ruby on Rails: framework de aplicaciones web de código abierto escrito
en el lenguaje de programación Ruby.
● Angular: framework de código abierto desarrollado en TypeScript y
mantenido por Google.
BACKEND
Es un framework desarrollado para el trabajo con JAVA como lenguaje de
programación.
Sirve para desarrollar aplicaciones enfocadas en microservicios que se
centra en entregar componentes o piezas pequeñas que sean más
administrables. En si diseñar aplicaciones de forma Modular, donde se
crean pequeñas piezas que funcionan de manera independiente pero que
se integran para funcionar de forma conjunta.
Maven vs Gradle
Herramientas de compilación de código abierto.
MAVEN : Herramienta de software que se utiliza para la construcción y gestión
de proyectos JAVA. Simple de configurar, basado en el lenguaje XML.
Archivo POM.xml, que contiene todas las dependencias o librerías que se utilizan
en el proyecto.
GRADLE: También gestor de proyectos para JAVA, muy similar a Maven con la
particularidad de que es utilizado para realizar trabajos multiproyecto o que
requieren de gran grado de personalización. Basado en lenguaje DSL.
XML - DSL
XML: Lenguaje de Marcado Extensible.
● Sirve para la comunicación entre aplicaciones.
● A diferencia de HTML que ya tiene las etiquetas definidas, con XML
podemos crear cualquier etiqueta.
● Se puede aplicar para analizar datos.
DSL : Lenguaje Específico de Dominio
● Utilizado para resolver un problema en particular y proveer una técnica
para solucionarlo.
MODELO
Es un paquete que contiene las clases (Entidades) a ser relacionados y que tienen conexión
directa con la base de datos.
ENTIDAD ATRIBUTOS
TABLAS CAMPOS
Interfaz
Es una plantilla que permite preestablecer el
contenido de una o varias clases, es decir que otras
clases la heredan y la implementan.
JPA
La Api de persistencia(almacenamiento) de Java.
API ( Interfaz de programación de aplicaciones).
JPA especifica cómo debe hacerse la persistencia de los objetos,
utilizando una biblioteca de interfaces que pueden ser implementadas.
JpaRepository
https://docs.spring.io/spring-data/jpa/docs/current/api/org/springframework/data/jpa/reposito
ry/JpaRepository.html
HTTP ( PROTOCOLO DE TRANSFERENCIA DE
HIPERTEXTO)
Las solicitudes HTTP es la forma en que las plataformas piden la información que necesitan
para cargar el sitio web.
MÉTODOS:
● GET : Espera que se devuelva información
● POST: El cliente está enviando información
@RequestMapping
● Request : Petición que se hace a una API
● @RequestMapping : Se utiliza para especificar peticiones web a clases
Controladoras,
● El mapeado sirve para especificar una ruta o dirección de acceso a un
método en específico.
Métodos
@GetMapping : Recuperar datos
@PostMapping : Enviar datos
http://localhost:8080/ver/e1/empleados
CRUD
● Guardar -> this.repositorio.save(objeto)
● Buscar -> this.repositorio.findById(id), this.repositorio.findAll()
● Eliminar -> this.repositorio.deleteById(id)
● Actualizar -> Empleado e = this.repositorio.findById(1260L).get();
e.setApellidos("Alvares");
this.repositorio.save(e);
Actividad
Buscar por id
Eliminar por id
Adicionar un nuevo empleado.
Actualizar el correo a un empleado.
Mapeado de entidades
Se define cómo se relacionan las entidades con el sistema de almacenamiento.
@OneToOne()
@OneToMany()
@ManyToOne()
@ManyToMany()
@OneToOne
@OneToOne(cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = “student_id”,
referencedColumnName=”id”)
private Student student;
@OneToOne(mappedBy = “student”, cascade = CascadeType.ALL )
private ContactInfo contactinfo;
@ManyToOne
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "id_empleado", referencedColumnName="identificacion")
private Empleado empleados;
@OneToMany
Actividad
● Crear otra Entidad llamada Nómina, con su respectivo controlador y repositorio.
● Nómina cuenta con los siguientes atributos:
○ IdNomina , que debe ser entero largo autoincrementable
○ mes
○ salario
○ id_empleado
● Tener en cuenta que un empleado tiene muchos pagos de nómina
● Realizar un CRUD con esta entidad.
Consultas por convención de nombres
buscar por Nombre del campo
Actividad
. Realizar todas las consultas por convención de nombres,
por cada una de los campos de las dos tablas.
Consultas @Query
Actividad
Realizar las siguientes @Query
1. Total de nómina en el año por cada empleado.
2. Total nómina por mes
3. Cantidad de empleados
4. Cuántos pagos ha recibido cada empleado
5. Nombre del empleado con mayor sueldo
webgrafía
https://www.arimetrics.com/glosario-digital/framework
https://www.tokioschool.com/noticias/spring-boot/
https://blog.hubspot.es/website/frontend-y-backend
https://www.chakray.com/es/gradle-vs-maven-definiciones-diferencias/
https://www.youtube.com/watch?v=hNG8Xq5ypuM
https://www.youtube.com/watch?v=9L6wZcFezpE
https://www.youtube.com/watch?v=qRbF-5lmCGE&list=PLih9u9zCKA877cukblpc2URKBs5nYjicU&index=14
https://www.cloudflare.com/es-es/learning/ddos/glossary/hypertext-transfer-protocol-http/
https://programandoenjava.com/requestmapping-en-spring-boot/#:~:text=La%20anotaci%C3%B3n%20%40RequestMapping
%20se%20utiliza,controlador%20como%20a%20los%20m%C3%A9todos.