20260129 JPA_14 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
No
00:11:43
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
00:24:32
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
sí
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
No
00:30:15
¿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