ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Backend Java.
Para el Inicio deben tener en cuenta todas las tecnologías que están
implicadas:
Tecnologías
Java.
Spring Boot.
MySQL - MySQL Workbench.
JPA.
Lombok.
IntelliJ IDEA Community Edition.
Conceptos:
Modelo entidad relación.
Sintaxis de java.
SQL.
Patrones de Diseño Backend.
Modelo Vista Controlador.
Patrón Abstract Factory.
Expresiones Lambda.
Programación Funcional java.
Modelo Entidad Relación ER.
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Posterior a la Instalación de IntelliJ IDEA Community Edition, y MySQL
Workbench.
Iniciamos creando el modelo entidad relación
Crearemos una tabla: “Estudiantes”, la cual contendrá.
Tabla Estudiantes:
Id – Long.
Nombre – String.
Apellido – String.
Código – Long.
Nota – Double.
Para esto pueden usar [Link] aquí pueden hacer la
diagramación de sus modelos de entidad relación.
Creamos nuestro Modelo:
Diagrama ER Estudiantes
[Link]
ab30de92ed87/edit?viewport_loc=37%2C117%2C1480%2C649%2C0_0&invitation
Id=inv_81302f97-4f00-46ec-839f-be32025aa177
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
En base a esto crearemos nuestro proyecto.
Teniendo en cuenta que usaremos MySQL Workbench, posterior a su instalación,
abrimos el programa para crear el contenedor de nuestra base de datos:
Abrimos nuestro motor de base de datos MySQL.
Procedemos a loguear:
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Procedemos a crear la Base de Datos
Le llamaremos: “notasDB”
Y Le damos Apply.
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Y Le damos Apply, y luego Finish.
Se a creado nuestra base de datos
Teniendo en cuenta el nombre de la base de datos y las credenciales de acceso,
estos son factores importantes para luego conectarnos a ella.
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Para la siguiente etapa, vamos a crear el proyecto en Spring Boot.
Para ello lo crearemos directamente en la página principal del framework.
Nos vamos a Spring Initializr : ([Link]
La configuración del proyecto es la siguiente:
Project:
Maven Project
Lenguaje:
Java
Spring Boot:
2.7.5 (Por defecto versión mas estable)
Group:
[Link]
artefact:
api-notas
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
name:
api-notas
Packaging:
Jar
Java:
11(versión estable)
Dependencies: Añadimos(ADD – Ctrl+B)
MySQL JDBC and R2DBC driver.
Spring Web
Lombok DEVELOPER TOOLS
Validation I/O
Spring Data JPA SQL
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Posterior le damos Generate, generamos el proyecto.
Descomprimimos y ubicamos donde queremos mantener nuestro proyecto.
Accedemos a la carpeta “api-notas”
Y sobre el espacio en blanco le damos clic derecho y la opción “Open IntelliJ”:
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Podremos visualizar nuestro proyecto.
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Ahora iniciamos la construcción de nuestra conexión, para esto nos vamos
al archivo de properties, el cual renombraremos y cambiaremos la
extensión: “[Link]”
Quedaría:
Procedemos a la Configuración de api-Server-Spring configs:
api:
version: 1.0.0
title: Notas API
basePackage: [Link]
description: Api para ver estudiantes y su nota
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
terms: https://
#Server configurations
server:
servlet:
context-path: /api-notas
port: ${PORT:8080}
error:
include-message: always
include-binding-errors: always
#Spring configs
spring:
jpa:
defer-datasource-initialization: true
[Link]-auto: update
show-sql: true
properties:
hibernate:
format_sql: true
dialect: [Link].MySQL5Dialect
datasource:
url: jdbc:mysql://localhost:3306/notasDB
username: root
password: root
driver-class-name: [Link]
Quedaría:
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Procedemos a crear la entidad que manejara los datos.
Para esto crearemos:
El paquete aplication a nivel del paquete apinotas.
Y en el paquete aplication creamos el paquete de entidad “entities”
Luego creamos la clase que manejara la entidad, una clase concreta llamada
“Estudiantes”:
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Quedaría:
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
Y la clase:
Aquí tendremos en cuenta los campos de la entidad según el modelo ER que creamos
al inicio:
Y usamos Lombok para la validación y usamos la anotación @Entity para indicar que
es una entidad.
Creamos y añadimos las anotaciones pertientes.
@Data
@Entity
@RequiredArgsConstructor
@NoArgsConstructor
@Table(name = "estudiantes")
Además
@Id
@GeneratedValue(strategy = [Link])
private Long id;
@NonNull
@Column(length = 40)
@NotBlank
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
private String nombre;
@NonNull
@Column(length = 50)
@NotBlank
private String apellido;
@NonNull
@Column(length = 30)
@NotBlank
private int codigo;
@NonNull
@Column(length = 2)
@NotBlank
private double nota;
Tendremos en cuenta cada uno de los parámetros que declaramos con las
validaciones pertinentes.
Quedaría de la siguiente manera:
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].*;
import [Link];
@Data
@Entity
@RequiredArgsConstructor
@NoArgsConstructor
@Table(name = "estudiantes")
public class Estudiantes {
@Id
@GeneratedValue(strategy = [Link])
private Long id;
@NonNull
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
@Column(length = 40)
@NotBlank
private String nombre;
@NonNull
@Column(length = 50)
@NotBlank
private String apellido;
@NonNull
@Column(length = 30)
@NotBlank
private int codigo;
@NonNull
@Column(length = 2)
@NotBlank
private double nota;
De esta forma al ejecutarse se crea la tabla con los atributos correspondientes.
Quedaría en la Base de Datos.
@D’DavidGaleanoPuche
ASIGNATURA Tutor
UNIVERSIDAD DE CARTAGENA Programación Orientada a D’ David Galeano Puche
Objetos
@D’DavidGaleanoPuche