Saltar navegación

20260129 JPA_14 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 1 de febrero de 2026 por Raquel G.

4 visualizaciones

Descargar la transcripción

Vale, a ver, aquí hay una, si alguien ha copiado sin pensar, 00:00:00
pues habrá copiado mal porque yo ahí lo he escrito mal, 00:00:05
que lo ha, sí, que lo ha detectado Daniel, ¿vale? 00:00:08
Cuidado con esto, que yo había puesto e.equipo y no hay ninguna 00:00:16
propiedad equipo en el objeto equipo, ¿vale? 00:00:19
Recordad que esta select era a través de un videojuego que 00:00:24
dábamos como parámetro, este de aquí, 00:00:28
a través de un videojuego que dábamos 00:00:30
como parámetro en el web, 00:00:32
pues de este videojuego, ¿qué sacábamos? 00:00:34
Sacábamos del videojuego 00:00:37
JV, el nivel y la posición, 00:00:38
eso está claro. Pero el nivel y la posición 00:00:39
solo no nos bastan, 00:00:42
nos bastan 00:00:44
del jugador 00:00:44
que está jugando 00:00:47
ese videojuego 00:00:50
y el nombre del equipo que juega. Entonces, el jugador 00:00:51
que está jugando ese videojuego, 00:00:54
Lo sacamos de la propiedad jugador 00:00:56
De este 00:00:59
A través de la propiedad jugador 00:01:00
Lo sacamos el jugador 00:01:02
Y a través de este jugador sacamos el nick 00:01:03
Y luego el equipo, ¿cómo lo sacamos? 00:01:06
El equipo lo sacamos a través de la propiedad 00:01:08
Equipo de este jugador 00:01:11
Que a su vez hemos sacado 00:01:12
De la propiedad jugador de esta relación 00:01:14
Entonces la propiedad 00:01:16
Equipo de este jugador es este objeto E 00:01:18
Y de este objeto E 00:01:21
Es la propiedad equipo de este jugador 00:01:22
Que es un objeto con cosas 00:01:24
lo que nos interesa es el nombre del equipo solamente 00:01:25
y yo había puesto aquí antes 00:01:28
e.equipo 00:01:29
como si el objeto equipo tuviera una propiedad 00:01:31
equipo dentro 00:01:34
pues 00:01:34
estaba mal 00:01:39
¿vale? 00:01:40
posición también lo he escrito mal 00:01:41
posición principal 00:01:43
ay, ay, ay 00:01:45
estáis demasiado despiertos para mí 00:01:47
posición principal, ¿no? 00:01:50
así 00:01:52
algunos más que otros 00:01:53
Vale, posición principal 00:01:55
Ahora lo he puesto bien 00:01:57
Si no, magnífico 00:01:59
Porque si no nos saldrá en error de ejecución 00:02:01
Y la verdad es que lo que es estupendo 00:02:03
Es cuando uno arregla las cosas 00:02:05
A través de un error de ejecución 00:02:06
Vale, pues entonces 00:02:08
Vamos a probar este 00:02:10
Método 00:02:11
Vale, pues vamos a dar 00:02:16
Un servicios, ¿dónde estamos? 00:02:20
Aquí 00:02:22
No, el main, perdón 00:02:23
Main 00:02:27
Vale 00:02:28
Pues servicios 00:02:29
¿Qué método queremos? 00:02:34
El método de ranking por nivel en juego 00:02:35
Al que le pasamos 00:02:38
El JPA útil 00:02:40
Este de aquí 00:02:42
¿De qué videojuego queremos ver todos los jugadores 00:02:43
Que juegan, en qué posición, etcétera, etcétera? 00:02:49
Ojo, es que lo he borrado tanto 00:02:53
Que ya aquí no me queda nadie 00:02:55
Voy a meter algún otro 00:02:56
Para que salgan más de uno 00:03:01
Pues del videojuego 3 voy a meter a más jugadores 00:03:03
A ver, del videojuego 3 00:03:06
Voy a meter al jugador 1 00:03:10
Que juega como juega 00:03:11
¿Cómo se puede jugar en un videojuego? 00:03:14
Juega como hombre 00:03:16
¿Y en qué nivel? 00:03:17
Pues un 3 00:03:20
Y al videojuego 3 00:03:21
Juega también el jugador 2 00:03:26
Que juega como mujer 00:03:29
Esto es muy 00:03:30
Cultura de género muy trasnochada 00:03:32
Lo siento 00:03:35
Eso está bien, sí 00:03:37
Que juega con el nivel 1 00:03:41
Está empezando 00:03:44
A tomar por saco 00:03:46
No le he dado la play y todo lo que he hecho 00:03:48
Hoy en día solo puede ser 00:03:50
O delantero o tanque 00:03:52
No puede ser ni hombre ni mujer 00:03:53
Yo soy tanque 00:03:55
Para suerte 00:03:56
Venga, al videojuego 00:03:59
tres, juega uno 00:04:01
que juega como 00:04:03
casa 00:04:05
y al videojuego tres 00:04:06
el dos juega 00:04:11
como silla 00:04:13
a ver, yo de pequeña 00:04:15
jugué al primer juego 00:04:23
que existió en la vida mundial 00:04:27
del príncipe de Persia 00:04:29
al primero 00:04:31
al de ordenador 00:04:33
que era como una especie de 00:04:35
de consola de los videojuegos 00:04:37
que jugabas con el teclado 00:04:40
¿tú has jugado a ese? 00:04:41
al antiguo, antiguo, al que atravesaba 00:04:44
los espejos, que eran 4 píxeles 00:04:45
el por obvio el príncipe de Persia 00:04:48
era un encabezón así 00:04:49
sí, pues 00:04:50
era muy bonito 00:04:53
y luego de hecho 00:04:55
cuando ya me regalaron 00:04:57
la versión ya más también para ordenador 00:04:59
ya dejé de jugar porque no me parecía 00:05:02
tan bonito 00:05:04
también hay verdad que era más mayor ya 00:05:04
pero el primero es que te quedabas con ese encanto 00:05:07
había una pantalla que era incapaz de pasar 00:05:09
pero 00:05:11
ah pues debe ser que el mío estaba 00:05:12
atascado porque había uno en la cual 00:05:23
él atravesaba un espejo 00:05:25
y salía como su reflejo y empezaban 00:05:27
los dos a correr por ahí 00:05:29
Pues yo ya me quedaba ahí con los dos ahí corriendo 00:05:30
Y ya de ahí no me movía 00:05:33
Pero bueno 00:05:34
Bueno, pues a ver 00:05:35
Vamos a jugar 00:05:38
Vamos a 00:05:39
Del videojuego 3 00:05:40
Este que me va a dar 00:05:45
Este me va a dar una lista 00:05:46
De objetos 00:05:48
Vamos a serializarla 00:05:50
Como no 00:05:53
A Pablo lo hemos perdido 00:05:54
Vamos a serializarla 00:05:56
Y esta lista de objetos 00:05:58
¿qué vamos a hacer? pues para cada lista 00:06:00
de objetos x 00:06:03
la vamos a mostrar 00:06:05
pero como una raíz si hacemos el siso se muestra 00:06:08
lo raruno, la vamos a mostrar 00:06:11
como lista 00:06:14
raíz as list y le paso 00:06:15
x, y aquí hay mucho punto y coma 00:06:24
y falta mucho paréntesis 00:06:30
vale, entonces me va a mostrar como lista 00:06:32
los elementos que son todos string 00:06:35
string o int 00:06:38
entonces va a poder, o sea, x es el array 00:06:39
de objetos, ¿verdad? 00:06:42
x es el array de objetos 00:06:43
y cada elemento de ese array es el que tiene 00:06:45
un string 00:06:48
que es el nick, un string que es el nombre 00:06:50
un int que es el nivel 00:06:52
y un int, creo, que es la posición 00:06:53
o no, o otro string 00:06:55
bueno 00:06:58
entonces, al convertir ese array 00:06:59
de objetos como lista 00:07:02
el toString 00:07:03
de list 00:07:06
si está logrado, no es como el toString 00:07:07
de object que no está logrado 00:07:09
de hecho no está 00:07:11
ni hecho, es el de object 00:07:13
así que no funciona 00:07:16
pero la lista sí que sobreescribe 00:07:17
toString de object, con lo cual esto ya queda bonito 00:07:20
y como los int y los 00:07:22
string tienen su propio toString, esto lo vamos a ver 00:07:23
bonito, vamos a ver 00:07:25
y si nos da un error maravilloso 00:07:28
porque tendremos 00:07:29
como cuando me salen cosas rojas 00:07:31
me da un subidón, me pone como una moto 00:07:34
porque digo, ostras, porque ahí te pones a navegar 00:07:35
a bucear y encuentras un montón de cosas 00:07:38
a ver, porque nunca he hecho 00:07:39
exámenes de esto, si alguna vez hice un examen 00:07:42
y veía cosas rojas, ya no me 00:07:44
pondría tan contenta 00:07:45
claro, no es igual estar en tu casa 00:07:47
disfrutando de la programación que estar en un examen 00:07:52
mira 00:07:54
ya, todavía no se disfruta igual 00:08:01
vale, pues sí, efectivamente 00:08:07
los tres que he puesto, el de silla, casa 00:08:09
y delantero, pues ahí están en su tuestre 00:08:11
vale 00:08:13
fue muy bonito todo 00:08:14
vale 00:08:18
pues aquí lo ideal 00:08:23
es que os pongáis a practicar 00:08:26
con esa lista de servicios, haciendo más servicios 00:08:27
porque 00:08:30
de alguna manera 00:08:31
esencialmente el examen 00:08:33
sobre todo es eso 00:08:36
bueno, luego construir el proyecto que funcione, claro 00:08:37
pues si hay que hacer algún DAO, hacerlo 00:08:39
si yo doy DAOs que están mal y hay que cambiar, cambiarlos 00:08:41
a entender lógicamente los conceptos 00:08:44
del patrón nuestro que usamos 00:08:45
que es el patrón DAO servicios, el patrón 00:08:47
que usamos, vale, pues 00:08:49
entender esas ideas, y luego ya esencialmente 00:08:51
es, pues poder 00:08:54
navegar a través 00:08:55
de los objetos para 00:08:57
modificar la base de datos, esencialmente 00:08:59
es eso, entonces, eso 00:09:02
se traduce en unos servicios que practicad 00:09:03
con la lista esa que os di 00:09:05
A ver cómo os veis 00:09:06
¿Vale? 00:09:09
Bueno, si el próximo día queréis que hagamos alguno 00:09:11
O corrijamos alguno, lo que sea 00:09:13
Este, que es muy raro 00:09:15
Vamos a hacerlo aquí, a ver si nos sale 00:09:17
Pues lo hacemos 00:09:19
Vale 00:09:20
Y mientras 00:09:21
¿Por qué se me ha quitado? 00:09:24
Ay, qué rabia me da eso, me cago en todo 00:09:26
¿Por qué he dejado de verla cuando 00:09:28
Pongo el eclipse? 00:09:33
Ah, vale, porque lo tenía 00:09:34
Bueno, pues entonces 00:09:36
Aquí hay cosas feas 00:09:40
Bueno, feas, a mí me encantan 00:09:43
Son muy bonitas 00:09:45
Pero para la generación actual son feas 00:09:46
Sí, ahí pone el grupo feo 00:09:49
¿Qué es? 00:09:51
Me voy a la clase 00:09:54
Me voy a main 00:09:55
Bueno, ya diré 00:09:56
Bueno, a ver 00:09:57
Estamos hablando de un escritorio 00:09:58
Ya cambiaremos de arquitectura 00:10:00
Me da igual que sea escritorio 00:10:01
Que sea un API REST 00:10:02
Que sea un 00:10:04
Ya cambiaremos de arquitectura 00:10:04
porque es lo mismo 00:10:06
pero cambiaremos de arquitectura ya con sprint 00:10:07
porque hacer una pyrres sin sprint da mucha pérdida 00:10:09
vale 00:10:11
aquí ya vemos cosas feas 00:10:13
pues 00:10:15
todo el rato esto 00:10:17
estoy todo el rato repitiendo esto 00:10:18
repitiendo esto de aquí 00:10:21
gracias por entender 00:10:24
ya, pero yo soy un 00:10:28
esbirro del 00:10:35
sistema y el sistema me dice 00:10:37
que os venda, que no 00:10:39
hombre, que si hay un framework que te gestiona 00:10:41
todo esto, pues mucho mejor 00:10:43
y tiene sentido, no digo, no es que me resista 00:10:45
bueno, efectivamente 00:10:47
claro, pues sí, si esa es 00:10:54
mi teoría 00:10:55
Es más, yo creo que ese método 00:10:56
debería dejarte poner un bloque 00:11:02
O sea, que querríais todavía más complejidad 00:11:03
Vale 00:11:10
Bueno, pues sí 00:11:11
es que me has tirado todos los 00:11:14
me has tirado el discurso, ahora qué hago, vámonos a casa 00:11:16
Pues si tú lo dices 00:11:18
Ya no tengo más que decir 00:11:20
Bueno 00:11:22
Pues ahora, si nos vamos a 00:11:24
Aparte de que 00:11:27
Aquí hay código 00:11:29
Que nos hace tocar cierto barro 00:11:30
Cierta suciedad 00:11:33
A nosotros nos gusta, porque somos gente que nos gusta 00:11:34
Fajarnos con las cosas 00:11:37
Pero bueno, sí, claro, nos gusta 00:11:38
Pelear en el barro, no nos gusta así 00:11:41
Aquí tenemos el cuerpo a cuerpo 00:11:44
Que puede nos gustarnos 00:11:50
y pero no solo el cuerpo a cuerpo 00:11:52
hay una cosa que esta si que tiene sentido 00:11:55
que es que nos estamos repitiendo 00:11:56
mucho 00:11:58
estamos todo el rato teniendo que pasar aquí 00:11:59
el entity manager 00:12:02
todo el rato teniendo que cerrar 00:12:03
entonces nos repetimos 00:12:06
mucho y está ese 00:12:10
principio de programación 00:12:12
que es y en la vida 00:12:14
no te repitas porque te conviertes en 00:12:16
un pesado 00:12:18
bueno, pues yo a mi hija siempre le doy este consejo 00:12:19
hay algo peor que ser mala 00:12:25
solo hay una cosa que es casi tan mala 00:12:29
como ser mala persona 00:12:31
a ojos de los demás 00:12:32
que es ser pesado 00:12:34
lo primero que tiene que evitar uno 00:12:36
es ser mala persona, lógicamente 00:12:42
y lo segundo que tiene que evitar es ser pesado 00:12:44
que a unos nos cuesta más que a otros 00:12:46
pero eso se tiene que evitar 00:12:48
bueno, pues aquí 00:12:49
esa es una de las pautas 00:12:52
de buen desarrollo 00:12:54
una buena práctica de desarrollo de código 00:12:56
que es no te repitas 00:12:58
es lo que los que le quieren 00:12:59
dar término en inglés para ser 00:13:02
super guays 00:13:04
no, otra cosa 00:13:05
más bonita 00:13:09
entonces, si tú dices esto 00:13:09
pues es super guay 00:13:12
¿vale? 00:13:18
Y dices, hostia, ¿cuánto boilerplate tienes aquí, colega? 00:13:18
Entonces, ¿qué estás diciendo? 00:13:22
O creo yo que estás diciendo. 00:13:24
Repetición. 00:13:25
Te estás repitiendo un huevo. 00:13:26
Claro, que nunca me he parado a pensar por qué. 00:13:28
Porque boiler, ¿qué significa? 00:13:30
Donde hierves. 00:13:33
Bueno, no sé muy bien por qué se usa este término. 00:13:35
Porque tu bol es hervir. 00:13:37
Pero boiler será el recipiente. 00:13:39
Bueno, no lo sé. 00:13:43
Pero no te repitas. 00:13:44
Es uno de los principios básicos, ¿vale? 00:13:46
Pues entonces 00:13:47
Eso por un lado 00:13:48
Otra cosa, esa ya la hemos mencionado 00:13:52
Aquí porque nos hemos puenteado el DAO 00:13:54
Y nos hemos quitado el DAO porque nos ha dado la gana 00:13:57
Pero 00:13:59
Voy en el plate 00:14:01
Ah, se traduce como repetido, mira, nunca lo había buscado 00:14:04
Vale, pues justo, no te repitas 00:14:06
Vale 00:14:08
Entonces, si además tuviéramos 00:14:09
El patrón DAO de verdad 00:14:12
Con el DAO no sé cuántos 00:14:13
Pues ahí 00:14:16
no solo nos estaríamos 00:14:16
repitiendo entre comillas 00:14:19
es que esto 00:14:20
ni yo me lo creo, esto es como los curas 00:14:25
que te sueltan el rollo y ni Dios cree en Dios 00:14:27
pues esto es lo mismo 00:14:29
ni yo me creo 00:14:31
lo que digo, pero bueno 00:14:34
algunas cosas si me las creo 00:14:35
pero me queda más remedio 00:14:37
no te repitas 00:14:46
salvo cuando la lógica de negocio 00:14:48
es distinta 00:14:50
haciendo lo mismo, creo que no lo entiendes 00:14:51
tú tienes dos clases 00:14:54
en las que en ambas por ejemplo tienes un método 00:14:55
que es quitar impuestos 00:14:57
y que en este momento 00:14:59
hacen lo mismo 00:15:01
pero porque da la casualidad de que 00:15:03
este año es el mismo y otra cosa tiene el mismo valor 00:15:05
claro 00:15:08
claro 00:15:08
claro, es que aquí tenemos el compromiso 00:15:10
entre no repetirte 00:15:14
y la escalabilidad 00:15:16
¿qué pesa más? que la aplicación 00:15:17
sea escalable, eso es lo más 00:15:20
importante, entonces precisamente 00:15:22
el tener 00:15:24
el método, el ejemplo 00:15:26
que ha puesto él, tener el método en dos sitios 00:15:28
claro, te permite ampliar la aplicación 00:15:30
sin tener que tirarla abajo prácticamente entera 00:15:32
porque los cambios van a ir 00:15:34
continuamente 00:15:36
bueno, pues entonces 00:15:37
aquí nos estamos repitiendo 00:15:39
un poquito, pero esto sí que 00:15:42
no nos hace más escalables 00:15:44
esto no nos hace más escalares, lo estamos repitiendo 00:15:45
aquí porque no tenemos DAO 00:15:48
pero tendríamos que estar continuamente 00:15:49
instanciando el DAO para inyectárselo al no sé qué 00:15:51
total, que como esas cosas 00:15:54
a la gente no le gustan 00:15:56
a los, pues bueno 00:15:58
venga, pues ya sabemos que 00:16:00
Spring te puede gestionar 00:16:01
muchas de esas cosas 00:16:04
te puede gestionar la 00:16:05
instanciación automática 00:16:07
de objetos cuando hagan falta 00:16:09
sin tener que preocuparte tú 00:16:12
metiéndoselas a los objetos que las necesiten 00:16:13
eso es su origen 00:16:16
inicial 00:16:18
pero también te puede hacer 00:16:20
toda la gestión de 00:16:22
crear el entity manager 00:16:24
hacer el commit, el begin 00:16:25
todo eso te lo puede hacer de forma transparente 00:16:28
bueno, pues entonces 00:16:30
si lo hacemos con 00:16:32
sprint, notaremos algún pequeño cambio 00:16:34
vale 00:16:36
pues entonces, sprint, ahora ya estoy 00:16:38
hablando en particular 00:16:40
de acceso 00:16:42
a datos, porque he dicho 00:16:44
Spring, que te gestiona transacciones, 00:16:46
te gestiona Entity Manager, entonces 00:16:48
te va dando acceso a datos. No estoy hablando 00:16:49
solo de la gestión de los 00:16:51
BIMs en general, ¿vale? Es decir, 00:16:53
¿necesito un DAO? Pues 00:16:56
instánciamelo, inyectalo, 00:16:58
¿necesito un Datasource? 00:17:00
Instánciamelo 00:17:03
y inyectamelo. No hablo solo 00:17:03
de la parte de Spring, 00:17:06
que instancia 00:17:08
BIMs cuando hagan falta, porque ese sería 00:17:09
el core, el Spring Core, ¿vale? 00:17:11
Ahora estoy hablando en particular de cosas 00:17:13
específicas de acceso a datos, como la 00:17:15
gestión de transacciones. 00:17:17
¿Cuándo abres la transacción? ¿Cuándo la cierras? 00:17:19
Bueno, pues esa parte de Spring 00:17:21
estaría dentro de 00:17:23
Spring Data JPA. 00:17:25
¿Y si ahora tengo que sustituir el de 00:17:26
MGET Transaction por una notación que pone 00:17:28
arroba transacción, me da exactamente igual? 00:17:30
Lo complicas más. 00:17:31
En realidad. Bueno, o no, 00:17:34
no lo sé. No se júzgalo. 00:17:36
bueno, pues de la parte 00:17:38
de Spring 00:17:42
que estoy hablando ahora 00:17:42
es esta parte 00:17:45
entonces 00:17:48
este módulo de Spring te puede poner 00:17:50
esa capa adicional que te permite 00:17:52
esa gestión de transacciones 00:17:54
y cuando trabajamos 00:17:55
con Spring Data, JPA 00:17:58
ya esta parte de aquí 00:17:59
a ver, ¿por qué estáis tan dispersos 00:18:02
ahí atrás? porque vais a exponer después 00:18:04
¿no? 00:18:06
en videojuegos, no es por eso 00:18:07
a ver si a costa de espalda de videojuegos 00:18:09
ahora me vais a suspender 00:18:11
bueno 00:18:12
el comportamiento subía 00:18:21
el comportamiento subía 00:18:24
o la baja 00:18:27
Spring Data JPA 00:18:29
además vamos a ver 00:18:31
que nos hace mucha magia, eso es verdad 00:18:33
ahí ya sí que hay que reconocerle aquí 00:18:35
vamos a reconocer que 00:18:37
Spring Data JPA 00:18:39
sí que en la parte de acceso a datos 00:18:40
te facilita mucho las cosas. 00:18:43
Entonces, ¿qué va a cambiar? 00:18:45
Pues Spring Data JPA sigue 00:18:47
por supuesto el patrón DAO. 00:18:49
Tú tienes tu entidad con las opciones 00:18:51
básicas del CRUD. Lo que pasa es que 00:18:53
Spring Data JPA lo cambia un poquito de nombre 00:18:55
pues porque es más fino. 00:18:57
Y ahora ya no vamos a ver 00:19:00
DAOs, sino que vamos a ver 00:19:01
repositorios. 00:19:02
Pero es lo mismo. 00:19:04
O sea, un DAO es un repositorio. 00:19:07
Un DAO, ya está. 00:19:09
Un DAO es un repositorio, es un DAO. 00:19:10
¿Y por qué lo cambia de nombre? 00:19:12
¿Por qué lo cambia de nombre? 00:19:14
No lo sé. 00:19:15
¿Para competir? 00:19:16
No lo sé, ¿por qué lo cambia de nombre? 00:19:18
¿Hay que sostener al músculo para que...? 00:19:19
Puede que para significarse. 00:19:20
O sea, yo soy sprint y repositorio 00:19:24
y forma parte de mi patrón de diseño. 00:19:27
Si llamo DAO, estoy refiriéndome 00:19:29
a algo propiedad de todo el mundo. 00:19:31
Bueno, tiene sentido. 00:19:34
Pero es un DAO. 00:19:36
los métodos del DAO 00:19:37
porque es un DAO 00:19:41
pero la magia viene 00:19:43
en que te los hace 00:19:45
él solitos 00:19:48
no los tienes que hacer tú 00:19:49
tú le dices, quiero un repositorio 00:19:51
y si le dices, quiero un DAO, dice, vale, hácelo 00:19:53
si le dices, quiero un repositorio, dice, ay, que bien 00:19:56
y te hace todos los métodos 00:19:58
dime 00:19:59
Es porque el repositorio no está asociado a la base de datos, mientras que el DAO tiene conocimiento de la infraestructura que hay detrás. 00:20:00
¿Pero a través de qué tiene ese conocimiento el DAO? 00:20:18
El DAO generalmente lo vas a utilizar porque tú vas a hacer una consulta SQL que sabes que va para MySQL. 00:20:21
Pero en el DAO también lo abstraes. 00:20:27
En el DAO normal también estamos abstraídos de eso. 00:20:41
A ver, picas SQL si no estás con JPA. 00:20:49
Porque si pones JPA ya has sacado, ya has abstraído. 00:20:53
Pero bueno, que no sé 00:20:57
Alguna razón tiene que haber 00:20:59
Que tendrá algo que ver con eso 00:21:00
Porque está más acoplado 00:21:03
A la lógica del negocio 00:21:04
Sí, que el repositorio está como más pegado 00:21:05
A la capa de negocio 00:21:08
Y DAO está más pegado a la capa de acceso a datos 00:21:10
No lo sé 00:21:13
O marketing 00:21:15
Que de esto hay mucho marketing también 00:21:16
Tiene que funcionar con el SQL por debajo 00:21:18
Claro, eso no cambia 00:21:20
Lo que pasa es que 00:21:22
Pero Spring por debajo del repositorio 00:21:23
Tiene sus propias capitas 00:21:26
Y nosotros por debajo del DAO 00:21:28
Tenemos directamente lo que hemos hecho nosotros 00:21:30
Que es JPA 00:21:32
Y JDBC, claro 00:21:33
Vale, pues entonces, a ver 00:21:36
Vamos a ver 00:21:38
Ya no me enrollo 00:21:40
O sí 00:21:41
Venga, pues vamos a hacer 00:21:43
Quita, por favor 00:21:45
Vamos a ver 00:21:46
Con una base de datos sencillita 00:21:50
Para no liarnos 00:21:53
Para ver el primer proyecto 00:21:55
Y luego ya podéis hacer uno más complicado vosotros 00:21:57
Entonces 00:21:59
Estaba aquí 00:22:01
Yo ya no sé lo que tengo aquí 00:22:03
Debería ir borrando según 00:22:08
Bueno, da igual si estará por aquí 00:22:10
Esta era 00:22:15
Spring Data 00:22:17
Aquí 00:22:18
Y a ver si me acuerdo 00:22:19
¿Eh? 00:22:25
A ver, no, en realidad 00:22:32
no hace falta, lo de Spring Tools 00:22:33
es muy cómodo cuando es la aplicación 00:22:34
con Spring Boot 00:22:36
bueno, lo podemos 00:22:37
porque el Spring Tools 00:22:40
eso sí, porque con el Spring Tools 00:22:43
tú cuando arrancas un proyecto lo marcas 00:22:48
y ya está, sí, pero bueno, voy a subir el POM y ya está 00:22:50
luego el siguiente, sí que lo 00:22:52
hacemos con Spring Tools y se acabó 00:22:54
entonces quiero ver aquí la base de datos 00:22:56
¿cómo se llamaba? 00:22:58
nada nuevo tampoco, o sea, estábamos 00:23:06
revisando, se ha parado 00:23:08
mientras hacíais la base de datos, si estábamos 00:23:10
revisando estas anotaciones, que no tienen 00:23:12
nada que no sepamos, esto que se ha quedado 00:23:14
pendiente de acabar concretando del todo 00:23:16
y ya está, y esto 00:23:18
que era lo del otro día 00:23:20
y luego cliente y 00:23:21
pedido, tampoco tiene nada nuevo 00:23:24
entidad, la clave primaria 00:23:26
y la 00:23:28
many to one 00:23:29
¿vale? ya está, que por defecto es sigue 00:23:31
se pone en lazy y se acabó, vale 00:23:34
Bueno, pues el modelo estaría 00:23:35
Me hace faltaría 00:23:40
El join column 00:23:42
El join column 00:23:44
El de líder 00:23:47
Ay, no lo he puesto, se me ha olvidado 00:23:50
Pedido, many to one 00:23:52
Pedido, sí, tienes toda la razón 00:23:54
Por escribir tan rápido 00:23:56
Join column 00:23:59
Name 00:24:01
Igual a 00:24:03
Cliente id 00:24:04
cliente barra baja 00:24:08
y de 00:24:13
este cliente viene de aquí 00:24:14
de cliente barra baja y de 00:24:17
porque no lo había puesto en el get 00:24:19
es que a veces lo pongo en el get 00:24:21
no, pero aquí no lo había puesto 00:24:22
vale 00:24:23
¿eh? 00:24:24
¿eh? 00:24:26
ahí abajo han pedido 00:24:32
eeeeh 00:24:35
este no lo sé 00:24:38
porque 00:24:39
a ver 00:24:40
porque esta clase le di el script 00:24:42
hgpt para que me las escribiera 00:24:45
y este protected 00:24:47
porque ha puesto este protected 00:24:49
para que no pueda instanciar 00:24:51
nadie que no sean 00:24:53
subclases 00:24:55
si yo pongo aquí un protected 00:24:58
solo me puede instanciar 00:25:00
una subclase 00:25:02
independientemente del paquete en el que esté 00:25:04
y también me pueden instanciar de la propia clase 00:25:07
eso significaba el protected 00:25:09
¿verdad? entonces ¿por qué 00:25:10
prohíbo que me instancien 00:25:12
gente que no sea 00:25:14
de mi subclase? 00:25:16
y sin embargo aquí tengo un public 00:25:21
no lo sé, así que 00:25:23
lo quito, fuera 00:25:25
vale 00:25:28
¿y en cliente también estará 00:25:32
igual? sí, pues lo quito, lo quitamos 00:25:35
public 00:25:36
vale 00:25:38
00:25:39
vaya 00:25:41
Ah, eso da igual 00:25:43
No, no, no, el table name no 00:25:54
Aquí dices, no, no, no 00:25:56
Ahí no 00:25:58
Con los nombres de 00:26:00
MySQL no distingue mayúsculas y minúsculas 00:26:02
Con lo cual al cliente le va a llegar 00:26:07
Todo en minúsculas 00:26:08
Le va a llegar 00:26:10
vale, entonces, ahora 00:26:11
ahora es cuando haríamos el patrón DAO 00:26:15
vale, pero nos lo va a hacer 00:26:17
solo SPRINT 00:26:19
esa es una de las cosas por la que hemos cogido 00:26:20
pero para que nos lo haga solito 00:26:23
SPRINT, pues tendremos que coger 00:26:25
las dependencias de SPRINT 00:26:27
vale, pues entonces 00:26:29
yo aquí os podría pasar las mías 00:26:31
pero vamos a hacer algo que es lo que 00:26:33
haríamos o haríais más en condiciones normales 00:26:35
que es 00:26:37
buscarlas o pedís a echar GPT porque 00:26:38
con suerte nos la da mal 00:26:41
y nos da luego un error cuando ejecutemos 00:26:42
y nos toca arreglarlo 00:26:45
¿vale? y así si nos toca arreglarlo ya diremos 00:26:46
estas dependencias, cuidado 00:26:49
que no son, entonces más que coger 00:26:51
las mías, vamos a decirle 00:26:53
vale 00:26:55
venga, ¿os gusta más Gemini? 00:26:58
ah, vale, vale, pues Gemini 00:27:03
venga 00:27:05
Joder 00:27:12
No me digas que me he olvidado la contraseña 00:27:27
A ver, yo quiero que me vuelva a pedir la contraseña 00:27:39
Espera, si vuelvo a hacer esto 00:27:41
Bueno, como ya tiene la 00:27:43
Vale, a ver 00:27:47
A ver 00:27:51
Ah, que susto, que ya se me había olvidado 00:27:58
Vale, pero yo pegué dentro de Gmail 00:28:03
Yo quería entrar en Gemini 00:28:06
Vale, esto fuera 00:28:07
dame el 00:28:10
pom.xml 00:28:25
de un 00:28:28
proyecto maven 00:28:29
que va a usar 00:28:31
sprint 00:28:36
Data JPA 00:28:39
MySQL 00:28:41
Jakarta, no creo 00:28:45
No va a hacer falta que se lo diga 00:28:49
Le voy a decir esto solamente 00:28:50
Starter de Spring Boot 00:28:52
No, yo no quiero Spring Boot, pero bueno 00:29:02
A mí también me va a dar Starter 00:29:04
Longbook 00:29:06
No quiero Longbook tampoco 00:29:11
es que yo no lo voy a usar 00:29:13
con Spring Boot porque no voy a poner la anotación 00:29:20
de Spring Boot 00:29:22
ahora, luego ya sí 00:29:23
luego ya sí 00:29:25
no quiero Spring Boot 00:29:26
por ahora 00:29:30
vale, el posteo es un poco más manual 00:29:32
que es lo que nos gusta a nosotros 00:29:38
vale, el para bla bla bla 00:29:40
maven puro, nivel de distancia 00:29:42
el conector de MySQL, vale 00:29:44
ahora ya, al no usar Spring Boot 00:29:46
tenemos que especificarle 00:29:48
que es hibernate lo que, y entonces 00:29:50
me está dando 00:29:52
nada, esto nada 00:29:53
me está dando, el hibernate 00:29:57
eso lo sabíamos, el conector 00:29:59
eso lo sabíamos, este 00:30:00
que 00:30:02
hace falta para algunas 00:30:04
en algunas de las que vamos a poner 00:30:06
hace falta para algunas anotaciones 00:30:08
y para otras no, para las nuestras no hace falta 00:30:10
Yacarta, no lo hemos usado, de hecho, hasta ahora 00:30:12
¿Y dónde está Spring Data? 00:30:17
Haz el favor 00:30:19
Pero 00:30:19
Voy 00:30:27
A usar 00:30:29
Spring Data 00:30:31
JPA 00:30:34
Sin 00:30:35
Spring Boot 00:30:37
Jolín 00:30:39
Este es más torpe 00:30:41
vale 00:30:44
la gracia es que es más torpe 00:30:46
vale, este tiene 00:30:48
Spring Framework Data, esto ya si me gusta 00:31:00
hibernate, conector 00:31:03
Spring Framework Normal 00:31:05
esto vale, esta ya si 00:31:06
esta tiene pinta de que nos ha acertado 00:31:09
vale, pues 00:31:11
copiamos esto en las dependencias 00:31:12
y el martes vemos como 00:31:15
pongo repositor y pin 00:31:17
ya está, ya está todo hecho 00:31:19
claro, todo lo que él nos puede 00:31:21
ofrecer que llega hasta unas limitaciones 00:31:24
luego nosotros le podemos añadir más cosas 00:31:26
y que más nos quedaría añadir en este proyecto 00:31:27
la gestión de los bins 00:31:30
quien instancia el repositor 00:31:31
y quien instancia no se que 00:31:34
pero bueno, eso se hace en dos patadas 00:31:35
venga pues vamos a 00:31:38
con Spring 00:31:40
cuando habíamos trabajado 00:31:45
ya con 00:31:48
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Segundo Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
4
Fecha:
1 de febrero de 2026 - 19:09
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
31′ 52″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
134.35 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid