Saltar navegación

20260217 MongoDB_2 - 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 17 de febrero de 2026 por Raquel G.

1 visualizaciones

Descargar la transcripción

Bueno pues ahora ya lo tenemos creado 00:00:02
Con las dos dependencias 00:00:04
MongoDB y SpringWeb 00:00:06
Que eso no se ha grabado pero no pasa nada 00:00:08
Se ha grabado en vuestros cerebros 00:00:09
Y fijaos 00:00:12
Solo con esas dos 00:00:16
La leche 00:00:18
Todo esto 00:00:20
Trae muchas cosas verdad 00:00:23
Y eso que no le hemos puesto 00:00:26
Ni validación ni nada 00:00:29
Vale 00:00:31
Vale 00:00:32
Nos crea el main 00:00:34
Para arrancar la aplicación 00:00:37
Y no nos crea nada más 00:00:39
Entonces 00:00:41
Nos ofrece un primer 00:00:42
Fichero de configuración 00:00:45
Que es este, donde podemos meter ya 00:00:47
Los datos que necesita 00:00:49
Spring, que es la base de datos 00:00:51
Aquí lo podríamos 00:00:53
Hacer en un properties, Spring, MongoDB 00:00:55
No se que 00:00:57
Pero como también hay otros formatos 00:00:58
De archivos de configuración 00:01:01
Que son los ya ml 00:01:02
Y con extensión yml 00:01:04
Pues vamos a hacer uno de esos 00:01:06
¿Vale? Entonces 00:01:08
A este le vamos a quitar directamente 00:01:10
Delete 00:01:13
Y vamos a hacernos 00:01:14
Un fichero de configuración con el otro formato 00:01:16
Pues por variar, porque estamos ya aburridos 00:01:18
De lo mismo todo el rato 00:01:21
Y porque se usa bastante 00:01:22
Sobre todo 00:01:24
Nuevo file 00:01:25
Aplication.yml 00:01:29
YML 00:01:36
A ver 00:01:40
Uy, ¿de dónde vienen las siglas? 00:01:43
Eso no me acuerdo 00:01:46
¿De dónde vienen las siglas? 00:01:47
YML 00:01:52
YML 00:01:53
O YML 00:01:56
YAM no es un lenguaje de marcado 00:01:57
Vale 00:02:09
De ahí viene 00:02:10
Alguna vez lo supe 00:02:11
Pero se me había olvidado completamente 00:02:13
Porque ya no tenemos edad de retener 00:02:14
Vale 00:02:16
Vale 00:02:17
Bueno, pues entonces, ¿por qué quería buscar yo esto? 00:02:19
Sí, pero esto es así 00:02:25
Vale, las extensiones normalmente 00:02:26
Se asume como estándar que sean tres caracteres 00:02:28
Vale, entonces 00:02:31
¿Por qué buscaba yo esto? 00:02:32
Lo buscaba precisamente 00:02:35
Para 00:02:37
Ponerte manifiesto 00:02:38
Que esto no es un lenguaje de marcado 00:02:40
Con lo cual aquí no hay marcas 00:02:42
Aquí lo que hay es tabulaciones 00:02:44
Y las tabulaciones 00:02:47
O las respetas 00:02:50
O las cagados 00:02:51
Como el puñetero Python 00:02:53
Que no sé quién ahí se inventó ese lenguaje absurdo 00:02:55
Es muy feo 00:02:58
No es para desarrolladores 00:03:03
Lo que pasa es que 00:03:12
Ay, pero para aprender está muy bien porque es muy facilito 00:03:13
Sí, vale, es muy facilito 00:03:15
Porque es todo como muy intuitivo 00:03:18
Pero el aprendizaje 00:03:19
Está ya muy viciado 00:03:21
Aprender con Python ya aprendes con muchos vicios 00:03:23
Entonces 00:03:26
Claro, entonces, bueno 00:03:27
Pues esto es igual 00:03:29
O respetas los tabuladores o las cagaos 00:03:31
Entonces, vamos a configurar lo básico 00:03:33
Lo básico 00:03:36
Entonces tengo yo aquí mi chuleta 00:03:37
Vale 00:03:40
Lo básico sería, venga, de sprint, su tabulación de MongoDB, ¿qué propiedad quiero? URI, vale, pues esto sería lo básico, con esto ya no necesitamos más, con esto de aquí, vale, aquí la URL de MongoDB y ya está, con esto ya nos va a tirar, no necesitamos más, vale. 00:03:43
Claro, una tabulación cada vez que te metes en algo dentro 00:04:11
Yo creo que es la que te hace 00:04:16
No, yo creo que es la que te hace 00:04:24
Bueno, a mí no me hace ninguna 00:04:28
Pero 00:04:33
Bueno, pues 00:04:34
Son dos 00:04:37
Bueno, pues esto es lo feo 00:04:40
De los lenguajes que no son de marcado 00:04:50
Que no sabes ya muy bien 00:04:51
Si estás tabulando correctamente 00:04:55
En nuestro caso 00:04:56
Ponemos alumnos 00:04:59
Ah, bueno, sí 00:05:00
La base de datos con la que tú quieras hacer las pruebas 00:05:03
A ver, vamos a intentar hacerlo 00:05:07
Todo homogéneo 00:05:09
Ya que he dicho tareas, pones tareas 00:05:10
Y ahora creáis la base de datos tareas 00:05:12
Que luego cuando vamos a insertar los documentos 00:05:15
No os valdrá que metáis nada 00:05:16
Es decir, haced una colección 00:05:17
Que se llame tareas, limpia y ya está 00:05:21
Esto no es como crear una base de datos 00:05:23
Que uno tiene que hacerla hasta hablar los campos 00:05:25
Colección tareas, limpia y ya está 00:05:27
Ya le iremos insertando documentos 00:05:29
Y así vamos todos iguales 00:05:31
Por si nos perdemos 00:05:33
Bueno, pues en principio 00:05:34
Ya estaría todo 00:05:37
Porque esto lo vamos a poner después cuando nos lo pide el cuerpo 00:05:38
Que todavía no nos lo pide 00:05:41
¿Vale? Para que nos queden bonitas las cosas 00:05:42
¡Hala! 00:05:44
Ahora, una vez que ya tenemos 00:05:47
La base de datos 00:05:48
Bueno, yo es que en la mía 00:05:49
Como el proyecto no me habéis cambiado 00:05:53
Y he llamado tareas 00:05:55
Pues, ¿vale? 00:05:56
Poned la que queráis, pero 00:05:59
¿Queréis alumnos? Pues venga, alumnos 00:06:00
Pero entonces, me tenéis que decir que modelo 00:06:02
Alumnos, o sea, que es que yo no quiero 00:06:04
Usar mi colección alumnos, porque esa colección 00:06:06
Ya está llena de mierdas 00:06:08
Pero es que al proyecto le he llamado tareas 00:06:09
Pues no me liéis, poned la que queráis 00:06:12
Tareas 00:06:14
Todo el mundo, hala, ya está 00:06:16
Que si no, quiero cambiar de nombre al proyecto 00:06:17
Venga, lo único es que 00:06:20
Cuando luego ya lo ejecutemos 00:06:23
Aseguraos de que tenéis 00:06:24
Una base de datos que se llama tareas 00:06:26
Ya está, una base de datos que se llama tareas 00:06:28
Con una colección 00:06:29
No, hombre, creáis una nueva 00:06:31
Si es que es darle al más y poner tareas 00:06:35
Ya está, no tenéis que hacer nada más 00:06:37
Darle al más y ponerlo 00:06:38
Que yo tengo aquí una 00:06:40
Esta 00:06:41
Tareas 00:06:42
Por ejemplo 00:06:45
Vale, pues entonces 00:06:48
¿Qué es lo siguiente que hacemos? 00:06:50
Después de 00:06:52
Fijar la configuración 00:06:53
Muy bien 00:06:55
Nuestro modelo de clases 00:06:57
Vale, pues venga 00:07:00
Nos hacemos nuestro paquetillo 00:07:01
Cuidado con 00:07:05
Respetar la raíz del empaquetado 00:07:15
Porque ya sabéis que es print boot 00:07:17
Si no se va a volver loco 00:07:19
Para buscar nuestros bins 00:07:21
Vale 00:07:22
Pues venga 00:07:25
Nuestra aplicación va a tener tareas 00:07:26
Eso va a tener nuestra aplicación 00:07:36
Tareas 00:07:38
Vale 00:07:40
Luego esto sería 00:07:40
Lo que en JPA 00:07:43
Pondríamos ahí, que anotación pondríamos en JPA 00:07:45
Entity 00:07:48
Aquí no ponemos entity 00:07:49
Sino que ponemos 00:07:51
Document 00:07:53
¿Vale? 00:07:55
No es tan obvio 00:07:57
¿Vale? 00:08:03
Luego, cada objeto tarea 00:08:06
Se va a mapear a un documento 00:08:10
¿Vale? 00:08:13
Entonces 00:08:16
La colección 00:08:16
Podría llamarse de otra manera 00:08:19
Por ejemplo, aquí en mi caso 00:08:20
Se llama tareas 00:08:23
Perdón, la colección 00:08:25
La colección 00:08:27
En mi caso se llama tareas con S 00:08:29
En plural 00:08:32
Tareas con S 00:08:33
Entonces, aquí debería 00:08:35
Cambiarle el nombre 00:08:38
¿Vale? Debería cambiarle el nombre 00:08:40
Y, ¿vale? 00:08:42
Ahora, los campos 00:08:53
El campo clave 00:08:55
Existe 00:08:57
Es obligatorio 00:08:57
Que es este, ¿vale? 00:09:00
El campo id 00:09:02
Y aquí, ¿qué va a ser? 00:09:03
Pues va a ser un object id 00:09:06
El campo id, ¿verdad? 00:09:08
Recordáis que el campo id 00:09:10
Es un tipo especial 00:09:12
Que 00:09:14
Que es este de aquí 00:09:15
Un campo especial 00:09:18
Pues sería este 00:09:19
Un object id 00:09:21
No hace falta que se llame id aquí 00:09:23
Aquí lo podéis llamar como queráis 00:09:38
Pero la anotación sí que tiene que ser id 00:09:40
Lógicamente, este campo no lo manejaremos 00:09:41
Desde Java 00:09:44
Y ahora aquí el resto de campos 00:09:45
Pues venga, ¿qué campos queremos que tenga la tarea? 00:09:47
Pues la tarea va a tener un nombre 00:09:50
Y va a tener una descripción 00:09:52
Y va a tener 00:09:58
Vamos a ponerle dos arrays, uno simple y otro complejo 00:10:00
Entonces 00:10:07
Va a tener un array de los miembros de la tarea 00:10:08
Participantes 00:10:13
Y va a tener un array de los ítems de la tarea 00:10:15
Getter y setter, nos falta hacer ítem 00:10:23
Podemos ir incorporando 00:10:44
Constructores según vayamos necesitando 00:10:46
Equals 00:10:49
Hascode según vayamos necesitando 00:10:50
Tu stream según vayamos necesitando 00:10:52
Ahora mismo, nada 00:10:54
Hay lógicamente más anotaciones 00:10:55
Estas anotaciones 00:10:59
Vienen de Spring Data MongoDB 00:11:01
¿Vale? Estamos trabajando 00:11:04
Ya directamente con la capa de Spring Data 00:11:06
Que está por encima 00:11:07
Luego estas son anotaciones de Spring Data 00:11:08
Que son las que va a usar el driver 00:11:11
Luego para hacer el mapeo 00:11:14
Hacer los fines, etc 00:11:15
Es decir, lo estamos enmascarando de a todo desde el principio 00:11:16
Que hay más anotaciones 00:11:20
En Spring Data MongoDB hay más 00:11:23
La estándar 00:11:25
Una que sí que tenemos que conocer 00:11:27
Si algún campo cambiara de nombre 00:11:30
Pues serían 00:11:32
Fill 00:11:33
Lo que en Spring Data JPA era column 00:11:34
Pues aquí sería fill 00:11:37
Sí, que el campo column 00:11:39
En Spring Data JPA 00:11:43
Que sería para cambiar el nombre de un campo 00:11:44
Pues ese campo aquí pasa 00:11:46
¿Vale? 00:11:49
Entonces document es el entity 00:11:50
Id es id 00:11:53
Field es column 00:11:54
¿Y qué es lo que aquí no hay? 00:11:56
One to one 00:12:00
One to many, many to one 00:12:01
Eso es lo que aquí no existe 00:12:02
Porque aquí ya está la información metida dentro 00:12:04
Aquí no hay one to many, many to one 00:12:06
no hay nada 00:12:09
porque 00:12:09
la base de datos 00:12:12
la tiene dentro exactamente igual que esta 00:12:14
igual, no hay ninguna clave 00:12:16
ajena que te lleve de una a otra 00:12:19
entonces es mucho más fácil 00:12:20
a ver si son más redundantes 00:12:22
en el sentido de que si varios tienen el mismo 00:12:29
trabajo, ese subdocumento 00:12:31
está en todas partes 00:12:33
pero claro, pesa 00:12:34
tampoco almacenar eso 00:12:37
que casi te compensa 00:12:38
los bits son estos, pues no pesan nada en realidad 00:12:40
una tabla de una base de datos 00:12:42
pues tiene un montón de metadatos en realidad 00:12:44
aquí metadatos no hay tantos 00:12:46
vale, pues aquí si 00:12:48
quisiéramos cambiar el nombre 00:12:52
pues sería esto 00:12:54
por ejemplo, vale 00:12:55
ahora vamos a 00:12:57
hacernos el ítem 00:13:00
vale, pues nada, esta 00:13:01
no es un document 00:13:18
ni tiene id, ni tiene nada 00:13:20
porque esto va dentro del otro 00:13:22
Luego aquí no hay que poner ninguna anotación 00:13:23
Aquí no hay que poner ninguna 00:13:26
Hay que poner anotaciones solo en el documento 00:13:27
Que forma parte 00:13:30
Este es el sub-documento 00:13:31
Los sub-documentos no tienen anotaciones, no tienen nada 00:13:33
Pues nada, el ítem 00:13:35
Pues es que este no necesita ni clave 00:13:40
Porque es que ya está dentro 00:13:42
Los sub-documentos no necesitan clave 00:13:43
Los que necesitan clave son los otros 00:13:45
Pues el ítem, pues nada 00:13:46
Tiene su nombre 00:13:49
A ver 00:14:00
Pues yo que sé, si está completado o no está completado 00:14:02
Por ejemplo 00:14:09
Completado 00:14:10
¿Listo? 00:14:15
¿Listo? 00:14:26
Podría, sí 00:14:31
Vale, es un buen hábito 00:14:32
Por ejemplo 00:14:35
No, he puesto, pero pongo el que quieras 00:14:43
He puesto ArrayList 00:15:17
Por variar 00:15:18
Normalmente pondría ArrayList en la colección que tenga menos 00:15:20
Bueno, pues un modelo sencillo 00:15:26
Podría ser este 00:15:30
Y ya está 00:15:31
Y ahora, lo siguiente que hacemos 00:15:33
Cuando trabajamos con Spring Data 00:15:38
Sea JPA, sea Spring Data 00:15:39
MongoDB, sea lo que sea 00:15:42
Lo siguiente ya que hacemos, una vez que tenemos el modelo 00:15:43
El repositorio 00:15:48
¿Vale? 00:15:52
Si no trabajáramos con Sprint, lo siguiente que haríamos sería el DAO. 00:15:53
Pero al trabajar con Sprint, hacemos el repositorio que ya envuelve al DAO por dentro. 00:15:58
Pues, ala, nos hacemos nuestra interfaz, tareas, repositorio. 00:16:03
Vale, y para que este sea un repositori 00:16:32
Tiene que heredar 00:16:38
De Mongo Repositori 00:16:39
Mongo Repositori 00:16:41
Sin más, yo creo que sí 00:16:44
A ver, porque 00:16:46
Tengo aquí un repo por ahí 00:16:47
Sí, es Mongo Repositori sin más 00:16:49
Vale 00:16:52
Repositori 00:16:53
Repositori 00:16:57
De la entidad 00:17:01
¿Vale? 00:17:05
Y de... 00:17:07
¿Eh? 00:17:09
Sí. 00:17:15
Sí, sería... 00:17:23
Espérate, a ver, aquí como lo tengo puesto. 00:17:24
Ah, vale, vale, vale. 00:17:31
Nada, no. Es que no es necesario 00:17:32
ponerle object id. Porque lo puedes 00:17:34
poner object id, pero 00:17:36
él lo mapea, lo mapea, hace la transformación 00:17:38
a string directamente. 00:17:40
¿Vale? Entonces, 00:17:42
tú puedes poner aquí string tranquilamente 00:17:43
no pasa nada y hace la transformación 00:17:46
hace la transformación 00:17:49
y ya está 00:17:50
es que si 00:17:51
es mejor no trabajar con un object id 00:17:54
en java, en realidad, porque no es un campo 00:17:56
que puedes trabajar con él, pero no es un campo 00:17:58
que vas a usar, un string siempre 00:18:00
estamos más acostumbrados, es más manejable 00:18:02
entonces 00:18:04
mejor que un object id que es meter 00:18:05
demasiada 00:18:08
basurilla de mongo aquí dentro 00:18:09
Pues el string que es el mapeo 00:18:12
De eso de ahí directamente 00:18:15
¿Vale? 00:18:16
Vale, entonces 00:18:21
Y los getter y setter los tengo que cambiar 00:18:23
Aquí 00:18:27
Vale 00:18:29
Los getter y setter 00:18:30
Aquí 00:18:33
Vale 00:18:34
Stream 00:18:38
Aquí puedes poner lo que sea 00:18:40
¿No? 00:18:44
Internet, stream 00:18:46
¿Dónde? 00:18:48
como id 00:18:49
y ya él lo transforma a object id 00:18:49
no, otro tipo de 00:18:53
dato que no sea string, no estoy tan segura 00:18:55
que lo transforme, porque es que es un string 00:18:57
realmente, es decir 00:18:58
el object id es 00:19:00
es esto 00:19:02
entonces si tú lo pones como string, te mapea 00:19:03
esto tal cual, si es que quieres verlo 00:19:07
como otro tipo de dato 00:19:09
no podría hacer un casting sencillo 00:19:10
claro, entonces 00:19:13
si lo mapeas a object id, luego lo tienes 00:19:15
que sacar a través del método que tenga 00:19:17
Objet y de dentro 00:19:19
O a que a las dos te funcionaría 00:19:20
Vale 00:19:22
Venga 00:19:22
Pues ya tenemos el repositorio 00:19:26
Que ya no sé cuál es el 00:19:29
Mío y cuál es el 00:19:31
El otro 00:19:32
Pues este repositorio ya te genera 00:19:33
Un montón de métodos 00:19:38
Sin más 00:19:40
Pero podemos poner nosotros los nuestros propios 00:19:40
Que en función 00:19:44
Del nombre que pongamos que tiene un montón 00:19:46
De opciones 00:19:48
voy a tejear las búsquedas 00:19:49
solas o si no 00:19:50
si aún así hay alguna consulta que no 00:19:52
encontramos un nombre 00:19:54
que se adapte, podemos poner una 00:19:55
pero vamos a hacer primero el servicio 00:19:58
y el controller para ver si nos funciona 00:20:00
todo y luego ya sí que podemos 00:20:02
jugar a poner aquí 00:20:04
métodos propios del repositorio 00:20:06
¿también usa jpql? 00:20:08
esto no es sql, a ver esto tiene 00:20:11
su criterio, ya lo hemos visto 00:20:13
entonces jpql no puede consultar 00:20:15
aquí, pues venga 00:20:18
servicio, que eso sería 00:20:19
lo siguiente, ¿qué haríamos? 00:20:28
que no lo he preguntado, pero ya lo 00:20:30
me lo habríais contestado 00:20:32
¿yo qué hago? 00:20:35
ah, es que estoy en otro proyecto 00:20:41
que no es, ¿verdad que sí? 00:20:43
¿dónde estoy? aquí 00:20:45
vale, a ver, ¿qué hora 00:20:46
es? 16 00:21:09
bueno, en fin, como hay 10 00:21:12
paramos, ¿vale? 00:21:13
Vale 00:21:14
Y ahora 00:21:18
Pues este necesita el repositorio 00:21:19
A ver 00:21:23
Cuidado, vamos a anotar 00:21:23
Para que Spring lo 00:21:26
Para que Spring lo encuentre 00:21:28
El repositorio no hace falta anotarlo 00:21:30
Ya sabéis 00:21:32
Pero este sí 00:21:33
Entonces, este va a necesitar el repositorio 00:21:34
Tareas 00:21:38
Repositori 00:21:41
el repo 00:21:44
que lo 00:21:46
inyecta por el constructor 00:21:47
ah, no 00:21:50
vacío no hace falta 00:22:00
lo que quiero es que use 00:22:02
el constructor que va a usar sprint 00:22:04
es este, este de aquí 00:22:06
entonces 00:22:09
y ahora 00:22:10
disp 00:22:12
este 00:22:13
ala 00:22:17
Pues eso lo estuvimos preguntando 00:22:19
A ver 00:22:26
¿Por qué Sprint recomendaba 00:22:26
Inyectar por constructor 00:22:30
Y no por cableado 00:22:31
Autocableado, o sea por 00:22:34
Y no nos supo decir 00:22:36
Ninguna conclusión, nada más que era la recomendación 00:22:40
Pero 00:22:43
Creo recordar 00:22:48
Es que creo recordar una cosa 00:22:51
Que dijimos en ese momento 00:22:54
Que tenía bastante sentido 00:22:55
Pero 00:22:57
Sí, que está relacionado con que te da más flexibilidad 00:22:58
O sea, más 00:23:08
El Autowire usa el constructor 00:23:08
Suyo 00:23:11
Tú aquí puedes de alguna manera marcar 00:23:12
Puedes especificar 00:23:16
Qué hacer en el constructor, puedes hacer más cosas 00:23:17
Tienes más libertad 00:23:19
Supongo que va por ahí 00:23:20
En cualquier caso se desrecomienda 00:23:24
Si puedes inyectar por constructor 00:23:27
Usar el otro, pues nada, hagámoslo 00:23:28
Vale, entonces aquí 00:23:30
El public 00:23:32
Este, pues este 00:23:36
Método de servicio, vamos a 00:23:38
Recuperar 00:23:40
Por ejemplo, todas las tareas que tenemos 00:23:41
Una lista de tareas 00:23:44
Venga, eso es lo primero que vamos a hacer 00:23:46
Esto por el nombre no hace nada 00:23:50
Depende de cómo pongas el nombre 00:23:52
Claro, esa es la idea 00:23:54
Y mucho más, incluso 00:23:58
GetTareas 00:23:59
Sí, pero es que llega un momento 00:24:02
Ya esto es como la IA 00:24:05
Que ya no saben lo que hacen 00:24:07
Entonces 00:24:08
Pues nuestro repositorio 00:24:11
Efectivamente, solo por el hecho de ser un MongoDB 00:24:13
Repositorio, mira todo lo que tiene 00:24:16
Pues lo mismo que el Spring Data JPA 00:24:18
Y no solo eso 00:24:20
Sino la posibilidad de hacer tus propios métodos 00:24:22
Que ya haremos, pues en este caso será el find 00:24:24
vale, ala 00:24:26
ya está 00:24:31
ya tenemos todo 00:24:32
todas las tareas 00:24:37
en el servicio 00:24:39
y ahora tendríamos que hacer el controller 00:24:40
que se hace el método get 00:24:43
que llama a este, lo muestra 00:24:44
etcétera, pero eso no nos va a dar 00:24:47
tiempo a hacerlo ahora, vamos solamente 00:24:49
a ejecutarlo 00:24:50
no vamos a ver nada, pero a ver si nos 00:24:51
da algún error, porque si nos da 00:24:55
algún error es porque Spring Boot ha detectado 00:24:57
algún error en nuestro fichero de configuración 00:24:58
entonces a lo mejor ese ya 00:25:00
ML, pues podríamos tenerlo mal 00:25:02
vamos a asegurarnos de que lo que hemos hecho 00:25:04
hasta ahora, a Spring no le 00:25:06
da mal rollo 00:25:08
vale, magnífico 00:25:09
las anotaciones están 00:25:20
bien, el archivo de configuración 00:25:23
está bien, Spring Boot 00:25:25
ha sido capaz de escanear 00:25:27
todo sin problema, pero claro 00:25:28
nos falta el controller para pedirle ahora ya 00:25:30
a través del 00:25:33
navegador o de Postman 00:25:34
lo que queramos. 00:25:36
¿Has anotado esto? 00:25:44
No, me dice en tareas repositorio. 00:25:47
¿En tareas repositorio lo has puesto bien todo? 00:25:50
Sí. 00:25:54
¿Pero te da error o qué es? 00:25:54
Me dice, ¿aplicar un plan de testar? 00:25:59
¿Para hacer un... 00:26:02
Service. 00:26:03
si con el paquete del repositorio 00:26:27
no está colgando de app, no lo va a encontrar 00:26:54
claro, pues cuidado con eso porque 00:26:55
uno a lo mejor escribe el nombre del paquete 00:26:59
escribe app con tres p's pero no se ha dado cuenta 00:27:02
y se puede estar tres horas diciendo 00:27:04
porque no lo encuentra, porque no lo encuentra 00:27:06
porque no está en la jerarquía de paquetes. 00:27:07
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:
1
Fecha:
17 de febrero de 2026 - 18:20
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
27′ 23″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
113.05 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid