-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnotes.txt
More file actions
92 lines (72 loc) · 4.97 KB
/
notes.txt
File metadata and controls
92 lines (72 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
###############################################################################
############################ SPRING INITIALIZR ################################
###############################################################################
Nos ayuda a generar un proyecto con las dependencias que necesitaremos, como:
Spring Web: Para construir una web, incluye RESTful, Spring MVC,
Apache Tomcat como contenedor integrado predeterminado.
Spring Boot DevTools: Brinda un aplicación rápida.
Spring Boot Actuator: Proporciona endPoints que ayudan a monitorear y administrar la aplicación
Spring Data JPA: Para la conexión a la BD.
H2 Database: Base de datos en memoria.
###############################################################################
####################### Internationalization - i18n ###########################
###############################################################################
Nos ayuda a personalizar nuestros servicios para diferentes personas.
###############################################################################
################################ OPEN API #####################################
###############################################################################
info: {}, información sobre la api
servers: [], servidores en los que corre la aplicación
paths: {}, Los diferentes recursos que están expuestos (nombre recursos, status code, tipo)
components: {} esquemas que se están utilizando (tipo variables, restricciones)
Swagger: generación de Documentación en html a partir de código fuente
###############################################################################
########################## SPRING BOOT ACTUATOR ###############################
###############################################################################
Para monitorear las API´s presentes en nuestra aplicación
> Con Hal Explorer podemos explorar las APIs mostradas con actuator de una manera más
sencilla através del navegador.
###############################################################################
########################## SPRING BOOT SECURITY ###############################
###############################################################################
- Con esto controlamos el acceso a los endpoints
- Solo se puede consumir los endpoints si se cuenta con el usuario y contraseña
###############################################################################
############################### H2 DATABASE ###################################
###############################################################################
Base de datos en memoria
- Abrir en el navegador localhost:8080/h2-console y en JDBC URL: jdbc:h2:mem:testdb (Lo indicado en application.properties)
###############################################################################
############################# SPRING DATA JPA #################################
###############################################################################
> Para poder hablar con un entity necesitamos crear un repositorio de datos de Spring.
> El repositorio es un interface
@RestController Interface
Endpoints Métodos que corren SQL
@RequestMapping @Repository
*----------* *---------------------*
USER <-- BROWSER <-- | resource | <------- | repository |
*----------* *---------------------*
^
|
*----------------------*
| entity |
*----------------------*
@Entity, @Id
Clase que representa a una tabla de la DB
> En un @Entity, cuando un campo tiene relación con un campo de otra tabla (entity), le agregamos la anotación:
- OneToMany(mappedBy = "user"), colocamos en mappedBye el nombre del campo al cual se relaciona con la otra tabla
- ManyToOne(fetch=FetchType.LAZY), Lazy es para que no recupere los datos del otro campo a menos que llame a getCampo
> Caso EJM: table usuario and table publicacion, donde un usuario tiene muchas publicaciones
y muchas publicaciones tienen un usuario.
- Cuando se obtenga a un usuario, se obtendrá tambien las publicaciones que este posee, y por cada publicación se
obtendría los detalles del usuario que lo creó, y así sucesivamente, para evitar esto podemos usar @JsonIgnore
- Dentro de la clase de publicacion, en el campo user colocamos el @JsonIgnore para ignorar este campo,
de esta forma, al obtener un usuario, obtendriamos tambien sus publicaciones sin el detalle de usuario en cada una.+
@Entity
public class Post {
...
@ManyToOne(fetch=FetchType.LAZY)
@JsonIgnore
private User user;
}