Saltar navegación

20251202 UD2-BDR_1 - 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 3 de diciembre de 2025 por Raquel G.

4 visualizaciones

Descargar la transcripción

Ahora sí, empezar a grabar. 00:00:00
Pues venga, nos hacemos un proyecto de Maven. 00:00:02
¿Cómo es una aplicación de escritorio? 00:00:06
El 76% dura mucho. 00:00:14
¿Cómo? 00:00:16
Sí, sí, pasa. 00:00:18
Venga, primer ejemplo. 00:00:25
Te veo de dos. 00:00:27
Gracias. Menos mal que tengo un secretario aquí delante. 00:00:29
Vale. 00:00:32
Vale 00:00:32
JDBC 00:00:33
Ejemplo 1 00:00:36
Por ejemplo, porque habrá unos cuantos más 00:00:39
De este tema, suponemos 00:00:42
Vale, este es el que vamos a subir a hola virtual 00:00:43
Entonces vamos a intentar que quede claro y limpio 00:00:51
Ay, que base de datos tan fea 00:00:54
Hemos cogido 00:00:58
Estoy pensando 00:00:58
Pero bueno 00:01:01
Vale, pues a ver 00:01:02
Tenemos aquí nuestro proyecto 00:01:05
aquí abajo del todo, muy bien 00:01:10
bueno 00:01:12
pues, primera cosa que nos 00:01:14
quitamos de encima 00:01:16
vamos a subir la máquina virtual 00:01:17
por si acaso 00:01:20
máquina virtual 00:01:22
y nivel de compilación en 00:01:29
consonancia 00:01:31
ala, he subido 00:01:32
Luis siempre vas a remolque 00:01:39
he subido la máquina virtual 00:01:42
de Mave como hacemos siempre 00:01:44
del 8 al 21 00:01:46
ya está 00:01:47
es bueno, he hecho un proyecto previamente 00:01:48
claro 00:01:51
yo que sé, habría que preguntárselo 00:01:51
a los del plugin de Maven 00:01:57
de Eclipse, no lo sé 00:01:59
pero crear un proyecto 00:02:00
es algo raro 00:02:05
bueno, venga, proyecto limpito 00:02:05
vale 00:02:09
primera cosa 00:02:11
ya podemos avanzar 00:02:13
que este proyecto 00:02:15
una dependencia va a tener 00:02:16
que es el driver, el conector 00:02:18
¿vale? porque ese es el que va a rellenar 00:02:21
la API, la API no es dependencia externa 00:02:23
porque va en el JDK, pero el conector 00:02:25
sí, pues no pasa nada 00:02:27
nos vamos al 00:02:29
repositorio 00:02:30
y le decimos pues algo con lo que 00:02:31
se entiende, pues JDBC 00:02:39
MySQL 00:02:40
que feo con mayúsculas 00:02:42
me ha quedado, pero bueno 00:02:44
vale, me sale la palabra clave 00:02:45
conector, hemos dicho que conector es como se suele 00:02:49
llamar, pues debe ser que esto es 00:02:50
entramos por 00:02:53
aquí, pues otra cosa, pero me da igual 00:02:54
te llevará 00:02:57
al mismo sitio, efectivamente 00:02:59
no te lleva 00:03:00
a que lo lleva aquí, efectivamente 00:03:01
bueno, pues va a ser esto 00:03:04
debe ser que va a ser esto 00:03:06
entonces, aquí uno 00:03:07
se debería coger la 00:03:10
versión en consonancia 00:03:12
con el MySQL que se 00:03:14
instaló, entonces 00:03:16
donde 00:03:18
la versión que os habéis instalado 00:03:20
la recordáis, si no siempre podéis 00:03:23
mirarla, a ver 00:03:26
si vais a administración 00:03:27
y pincháis en server status 00:03:29
hay dos opciones, que os salga esto 00:03:32
o que os dé un error 00:03:34
vale, pues este error 00:03:34
conseguí averiguar como se quitaba y lo apunté 00:03:37
en una chuleta que tengo que tener ahí, ahora lo miramos 00:03:40
entonces, ahí ver 00:03:42
ahora miro la chuleta 00:03:43
a ver, porque había que cambiar una cosa de Windows 00:03:46
Era un tema de la fecha de Windows 00:03:48
Había que cambiar, no, de la ubicación 00:03:50
Para que esto salga, curiosamente 00:03:52
Hay que irse a Windows y cambiar no sé qué de la ubicación 00:03:54
Pero bueno, ahora lo miro, porque lo tengo apuntado en la chuleta 00:03:56
Pero si os acordáis 00:03:58
Uy, mi ordenador se ha marcado 00:04:00
Vale 00:04:02
Si os acordáis de la versión que habéis instalado 00:04:03
No hace falta que entremos aquí 00:04:06
En mi caso, como yo tengo la 8035 00:04:07
Voy a coger un driver consonante con ese 00:04:10
No va a haber cambios con 00:04:12
Lo que hagáis vosotros 00:04:14
Bueno 00:04:15
Me llama la atención el hombre 00:04:20
Sí, sí, sí 00:04:22
Sí, a todos 00:04:26
Pero si lo de meternos aquí era solamente 00:04:28
Para que vierais la versión que tenéis 00:04:31
Pero esa versión en la propia carpeta 00:04:33
Yo creo que la tenéis puesta 00:04:35
O la podéis averiguar 00:04:36
Es la 9 ya, en el instalador 00:04:38
8.0.44 00:04:40
Vale, pues os cogeis un driver 00:04:43
En consonancia con ese y ya está 00:04:45
Para que no salga este error 00:04:47
Ya en algún momento mire la chuleta y lo quitamos 00:04:49
Es una tontería, no merece la pena 00:04:51
Pararnos ahora 00:04:52
Bueno, pues entonces, estábamos aquí en el repositorio este 00:04:54
La 8 00:04:58
Que salen estas 00:05:00
Bueno, yo me voy a coger la 8033 00:05:03
Por ejemplo 00:05:05
Uy, que mal rollo 00:05:06
Ah, no, no 00:05:11
Hay una nueva versión, 9.5 00:05:11
A la copiamos 00:05:14
No me acuerdo 00:05:16
La acabo de mirar, creo que era 35 00:05:20
Pero da igual, si es que es todo lo mismo 00:05:22
Puedes poner otro driver que te va a funcionar igual 00:05:23
Vale, pues esta ya la tenemos 00:05:26
Y ya se os habrán abierto 00:05:56
Unas dependencias de maven 00:05:59
Donde está el conector 00:06:00
Y un protobuf este 00:06:01
Que no sabemos lo que es y nos importa 00:06:03
Pero debe ser algo de lo que tira el conector 00:06:06
Ya está 00:06:08
Ahora ya sí que sí, vamos a empezar una aplicación 00:06:09
Para hacer cosas con esta base de datos 00:06:12
Como insertar coches, el CRUD de toda la vida 00:06:13
Insertarlos, cambiar 00:06:16
En esta base de datos es tan sencilla 00:06:18
No tiene diferentes tablas 00:06:19
Con lo cual pocas cosas podemos hacer 00:06:21
Pero un CRUD básico de insertar, consultar, eliminar 00:06:23
¿Perdón? 00:06:26
Sí, sí, sí, el primero que te ha salido 00:06:33
En el repositorio de Maven 00:06:35
Y luego ya te vas a la versión 8.0 00:06:36
La que sea, que es la... y ya está 00:06:39
Vale 00:06:40
bueno, ahora ya sí que vamos a hacer 00:06:42
un CRUD básico de esta aplicación 00:06:45
pero bueno, vamos, aunque sea una base 00:06:47
de datos tan pequeñita 00:06:49
vamos a hacer un intento 00:06:50
de diseño un poco más 00:06:53
profesional, entonces un 00:06:55
intento de diseño un poquito más profesional 00:06:57
implica que hagamos 00:06:59
un modelo en consonancia con la base de datos 00:07:01
me estás mirando con cara 00:07:03
de que me vas a 00:07:05
sacar la puntilla de algo 00:07:07
vale, pues entonces 00:07:08
Vaya modelo más tonto 00:07:12
Una clase 00:07:14
Ventas, ya está 00:07:15
Pues venga, vamos a hacer nuestra clase 00:07:18
Ventas 00:07:21
Venga, nuestra clase 00:07:21
Ventas, por ejemplo 00:07:43
Y ventas que tiene 00:07:45
Pues ventas tiene 00:07:47
A ver, los nombres de clases 00:07:49
Siempre deberían empezar con mayúscula 00:08:05
No, no, no, perdón 00:08:08
Es que yo aquí lo he puesto muy alegremente 00:08:12
Aquí el nombre bonito 00:08:13
Es Venta 00:08:15
Lo va a entender quién 00:08:17
Es que aquí no hay nadie entendiendo 00:08:20
Ya, pero es que 00:08:21
Ese mapeo lo haces tú 00:08:24
Claro, otra cosa es que pusiéramos una capa 00:08:25
Adicional, entonces ahí tendríamos que decirle 00:08:28
Oye, que la clase ventas se corresponde con la tabla 00:08:30
Ventas, eso tienes que decir 00:08:32
Claro, no lo va a coger directamente por el nombre 00:08:34
A menos que tú lo configures 00:08:36
De manera que te digas que se llama igual 00:08:38
Vale, pero ahora mismo 00:08:40
Lo hacemos todos nosotros 00:08:42
Entonces vamos a 00:08:44
A ver, ¿qué te has perdido ahora? 00:08:45
No, no, no, perdones 00:08:47
la 8033 00:08:48
he cogido yo 00:08:52
la 80 cualquiera 00:08:53
vale, entonces es verdad, ventas es un nombre 00:08:57
mucho mejor que ventas 00:09:00
para un modelo 00:09:01
string y aquí teníamos 00:09:02
el nif del 00:09:05
vende del comprador 00:09:07
aquí en la base de datos 00:09:09
hemos puesto 00:09:11
nif comprador 00:09:13
con barra baja 00:09:16
porque para MySQL 00:09:16
los identificadores, las mayúsculas 00:09:18
y las minúsculas, pues no existen 00:09:21
entonces 00:09:23
NIF comprador con la C mayúscula 00:09:24
no significaría nada, no pega 00:09:27
entonces siempre se suele poner con 00:09:29
barras bajas, pero sin embargo en Java 00:09:30
en Java lo de la barra baja 00:09:32
queda muy feo, aquí 00:09:35
¿os gusta la barra baja? 00:09:36
A mí me da igual, pero es que no entiendo porque hay que estar cambiando 00:09:38
de estándar en cada segundo 00:09:40
de aplicación distinta, y luego usas Python 00:09:42
y lo mismo, que hay que decir barra baja 00:09:44
A ver, son como 00:09:46
convenios 00:09:49
que vamos interiorizando 00:09:51
porque lo llevas viendo y haciendo siempre 00:09:52
y ya lo interiorizas y te mueven de ahí 00:09:54
y ya te da ansiedad 00:09:56
Así es más bonito 00:09:57
Que yo no es que esté diciendo 00:10:11
que usar en Java la barra baja jamás 00:10:14
No, a mí particularmente 00:10:16
me parece feo 00:10:19
y no suelo verlo. 00:10:20
No suelo ver identificadores de propiedades 00:10:22
con barra baja. Serían siempre 00:10:24
más así. ¿Vale? 00:10:26
Sí, con las 00:10:31
constantes sí, como convenio. La barra baja 00:10:32
al principio. Sí, pero bueno, 00:10:34
claro, pues tú ves la barra baja al principio y rápidamente 00:10:36
te das cuenta de que eso es una constante. 00:10:39
Vale, pero en identificadores de propiedades 00:10:40
genéricas y variables, 00:10:42
se puede usar, pero no sé, como que no hay hábito. 00:10:44
Vale, pues NIF comprador y teníamos 00:10:48
además el coche, ¿verdad? 00:10:50
Y el color. 00:10:53
Sí. 00:10:55
si esto fuera un récord, 00:10:56
podríamos dejarlo así, 00:11:02
pero como no sabemos si vamos a modificar 00:11:04
que seguramente tendremos que modificar, 00:11:06
pues getter y setter y a tirar. 00:11:09
A menos que pusiéramos longbox, 00:11:10
que nos da pereza poner la dependencia de longbox. 00:11:12
La que te genera 00:11:17
una dependencia que pones y que 00:11:18
la anotas y te genera los getter y los setter 00:11:20
luego en tiempo de 00:11:22
Tú no los ves, pero están ahí. 00:11:23
¡Hala! 00:11:27
Sin 00:11:31
constructor y sin nada, por pura 00:11:31
vaguería. Si luego lo necesitamos, 00:11:34
pues lo 00:11:37
ponemos. 00:11:38
Vale, ya tenemos nuestra clase de modelo, que menos. 00:11:41
Si trabajamos con ventas, que menos. 00:11:44
Vale, pero es que ahora además 00:11:46
de trabajar con ventas, vamos a hacer 00:11:47
un CRUD. 00:11:50
Es decir, un acceso a datos. 00:11:52
Pues, hombre, vamos a también hacer un intento al menos de diseño elegante. Pues, como hacemos capa de acceso a datos, qué menos que hacer un DAO, ¿verdad? ¿Qué es el DAO? El DAO es una clase que te recoge los métodos relacionados con la persistencia de una entidad en concreto. 00:11:53
tenemos una entidad venta 00:12:17
esta entidad venta quiero 00:12:19
que sea persistente 00:12:21
¿qué significa quiero que sea persistente? 00:12:24
quiero que mi aplicación trabaje 00:12:26
con ella pero que 00:12:28
lo que le pase 00:12:30
se refleje en la base de datos 00:12:31
¿vale? y que quiero que cuando arranque 00:12:33
la aplicación pues 00:12:36
ventas 00:12:37
arranque con lo que haya en la base de datos 00:12:39
quiero eso, significa que quiero que sea persistente 00:12:41
esta entidad, eso significa 00:12:44
que va a haber que hacer operaciones 00:12:46
de acceso a la base de datos 00:12:47
pues hombre, un diseño elegante 00:12:49
sería, voy a recoger 00:12:52
todas esas funcionalidades 00:12:54
de acceso a la base de datos 00:12:56
en una única clase 00:12:58
y como esa clase va a ser 00:12:59
funcionalidades de acceso a la base de datos 00:13:01
para esta entidad 00:13:03
pues que se llame VentaData 00:13:04
VentaDataAccessObject 00:13:07
¿que lo podemos diseñar de otra manera? 00:13:09
pues si, lo podemos diseñar de otra manera 00:13:11
pero es más o menos la idea de diseño general 00:13:13
cuando se hace una aplicación 00:13:16
pues que tiene persistencia 00:13:19
pues venga, vamos a meter 00:13:20
el paquete donde van a ir 00:13:22
estas clases 00:13:28
de nuevo 00:13:29
vamos a 00:13:32
perdón 00:13:33
vamos a desacoplar todo lo que podamos 00:13:35
¿qué es 00:13:40
desacoplar en general? la idea de desacoplar 00:13:41
es todo lo que 00:13:44
podamos, separar 00:13:46
interfaz de implementación 00:13:47
mejor 00:13:50
en general, tampoco hace falta 00:13:51
pasarse, pero desacoplar 00:13:54
significa, voy a separar 00:13:56
la API que ofrezco 00:13:58
y que un tío me llama 00:14:00
y que un tío va a usar para llamarme 00:14:01
voy a separarla de la implementación 00:14:03
es decir, desacoplo 00:14:06
si la aplicación está desacoplada 00:14:07
va a ser mucho más fácil hacer los cambios 00:14:09
bueno, pues entonces, este DAO 00:14:12
aquí vamos a meter una interfaz solo 00:14:13
con lo que yo voy a querer hacer 00:14:16
con ventas 00:14:18
en la base de datos, una interfaz 00:14:19
y luego ya haré su implementación 00:14:21
¿vale? 00:14:24
pues venga, aquí vamos a meter 00:14:25
una nueva interfaz 00:14:27
que sea 00:14:30
ventadao 00:14:32
ala 00:14:35
y aquí ya 00:14:41
decido que me va a interesar 00:14:42
a mí hacer con estas 00:14:45
ventas, relacionado 00:14:46
con la base de datos 00:14:48
00:14:49
o un desarrollador más 00:14:50
otra clase 00:14:53
en otra clase que se llame 00:14:54
venta da o implementación, para que quede claro 00:14:57
que esa es la implementación de venta da 00:14:59
a ver, te ha quedado claro que 00:15:00
entre muchas de las cosas que vamos a hacer con los objetos 00:15:07
venta, va a ser llevarlos 00:15:10
y recogerlos de la base de datos 00:15:12
luego parte de las funcionalidades de la aplicación va a ser 00:15:14
acceder a la base de datos, pues vamos a meter 00:15:16
esas funcionalidades juntitas en algún sitio 00:15:18
vale, pues en lugar de meterlas 00:15:20
en un sitio y ya 00:15:22
vamos a separarlas en una interfaz 00:15:24
y una implementación 00:15:27
vale 00:15:27
pues entonces, ¿qué queremos hacer 00:15:29
con las ventas? pues por ejemplo 00:15:32
queremos insertar 00:15:35
una venta 00:15:37
y por ejemplo 00:15:39
queremos recuperar una venta 00:15:53
podríamos poner aquí muchos métodos 00:15:55
por su clave 00:15:57
o por ejemplo podemos querer 00:15:59
recuperar todas las ventas 00:16:10
porque estamos arrancando la aplicación 00:16:12
pues por ejemplo a lo mejor queremos 00:16:14
hacer esto 00:16:18
find all, esta no tendría 00:16:19
o ya bueno que nos venimos arriba 00:16:24
pues vamos a 00:16:26
por ejemplo borrar 00:16:27
bueno pues típica 00:16:30
clase dao 00:16:44
a ver que era esta cosa tan bonita que hacíais 00:16:46
Vale, una típica clase DAO 00:16:48
¿Cómo se implementa? 00:16:53
Pues ya veremos 00:16:55
Nosotros, ¿cómo la vamos a implementar? 00:16:56
Directamente con JDBC 00:16:59
Pero eso es competencia de la implementación de DAO 00:17:01
Vale, pues entonces aquí haríamos 00:17:03
Y... 00:17:06
Sí, se puede 00:17:09
Punto DAO 00:17:14
Implementación 00:17:21
Y aquí ya haríamos una clase 00:17:23
Venta DAO 00:17:27
implementación 00:17:34
y esta clase 00:17:36
ahora ya si que va a ser 00:17:38
la implementación 00:17:40
de venta dao 00:17:42
entonces 00:17:44
al implementar venta dao 00:17:50
pues ahora ya si que 00:17:55
vamos a tener que darle cuerpo a esto 00:17:57
y ahora ya para darle cuerpo 00:17:59
a esto tendremos que ver 00:18:01
como gestionamos las conexiones 00:18:02
donde la ponemos la conexión 00:18:05
donde la ponemos y como la gestionamos 00:18:07
y luego ya 00:18:10
como usamos esa conexión 00:18:11
son dos problemas, uno es la gestión de la conexión 00:18:13
a la base de datos, que no es trivial 00:18:15
y otro es 00:18:17
una vez que tengo esa conexión 00:18:19
que ya veré de donde la saco 00:18:21
hacer las operaciones 00:18:22
que esto ya es muy sencillo 00:18:25
¿vale? 00:18:27
y ya está, y este sería el JDBC 00:18:29
a pelo, y es que no tendría 00:18:31
más que esto que lo completaremos el próximo día 00:18:33
que se completa rápido 00:18:35
luego ya a partir de ahí es irle poniendo algunas capitas 00:18:37
para que todo este código que nos queda aquí 00:18:39
que para cualquier tontería 00:18:41
sea un insert, sea un find 00:18:43
al final acaban siendo un montón de tries 00:18:44
y un montón de cosas 00:18:47
pues para que ese código se quede un poquito más reducido 00:18:48
le vamos poniendo capas 00:18:51
dime 00:18:52
es un poco corto la pregunta 00:18:53
bueno, creo 00:18:55
¿por qué usamos inter en vez de int? 00:18:56
a ver 00:19:02
bueno 00:19:03
el envolvente al ser un objeto 00:19:05
pues facilita 00:19:08
su uso en colecciones, en streams 00:19:10
en un montón de clases 00:19:12
de Java 00:19:14
que no permiten uso de primitivos 00:19:15
entonces usar el envolvente 00:19:18
es que si no 00:19:20
Java muchas veces ese propio int 00:19:21
ya lo va a promocionar él al envolvente 00:19:24
entonces hombre 00:19:26
pues integer ¿por qué 00:19:28
lo uso? 00:19:30
es más bonito, más completo 00:19:32
pues de nuevo depende del contexto 00:19:34
pero yo lo veo más 00:19:41
te lo vas a encontrar más en una aplicación 00:19:43
grande y gorda como normalmente ese 00:19:44
al final acabe 00:19:46
metiéndose a lo mejor en alguna colección 00:19:48
en algún otro sitio, en algún stream 00:19:51
pues es que va a promocionar a integer 00:19:53
igualmente 00:19:55
y vas a poder hacer cosas con él que no podías hacer 00:19:55
con un primitivo, porque integer tiene métodos 00:19:58
claro, porque es un objeto 00:20:00
entonces pues hombre es más completo 00:20:01
y tampoco es que vayas a perder memoria 00:20:03
por un tubo por poner integer en vez de int 00:20:06
bueno, no sé 00:20:08
queda mejor 00:20:12
más completito 00:20:14
y a la vista 00:20:15
queda mucho más claro 00:20:18
un integer es que lo ves muy grande y muy gordo 00:20:20
integer, int es como más pequeño 00:20:22
y más corto, no son otras letras 00:20:24
entonces parece una chorrada 00:20:26
pero no lo es, que cuando tú abres 00:20:28
una aplicación, porque vosotros no vais 00:20:30
a hacer aplicaciones desde cero 00:20:32
vais a abrir aplicaciones que van a ser 00:20:33
un galimatías, cuando te abres una aplicación 00:20:36
y más o menos te puedes hacer 00:20:38
una idea general de por dónde van los tiros 00:20:40
ostras, esa aplicación 00:20:42
está muy bien hecha y tú tienes mucho ganado 00:20:43
entonces, usar envolventes 00:20:46
en lugar de tipos primitivos, es la tontería 00:20:48
pero facilita eso, facilita 00:20:50
la elegibilidad del código también 00:20:51
son pequeños factores 00:20:53
que al 00:20:55
que, pero de nuevo 00:20:56
es el efecto 00:20:59
lo he interiorizado, siempre lo hago así, lo veo 00:21:01
hacer así y ya, pues bueno 00:21:03
al final se te olvida un poco porque lo haces 00:21:05
pero para mí tiene sentido 00:21:07
eso, que hay un montón de estructuras de Java 00:21:09
que te van a promocionar el envolvente igualmente 00:21:11
y que es mucho más flexible 00:21:14
no sé si te he convencido, pero bueno 00:21:15
eh... 00:21:19
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:
3 de diciembre de 2025 - 12:11
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
21′ 24″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
92.36 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid