¿Te atreves con un simulacro profesional? Este examen tipo final combina lectura de datos, modelado, consultas y persistencia en múltiples tecnologías: XML, MongoDB, Hibernate, XQuery y más. Requiere dominio total de lo aprendido durante el curso. ¡Súbete al reto!
📁 Parte 1 – Ingesta e integración múltiple
1. Lectura múltiple (CSV + Excel + XML + JSON)
Enunciado:
Diseña un sistema que permita cargar datos de países desde 4 fuentes distintas (.csv
, .xls
, .json
, .xml
), los unifique en una colección de objetos Pais
, y los relacione con Ciudad
y Religion
.
Objetivos:
- Detectar duplicados entre formatos.
- Validar datos incoherentes (p.ej. país sin idioma, ciudad sin superficie).
- Consolidar todo en una lista final.
Tecnologías esperadas:
- CSV → Scanner o OpenCSV
- Excel → Apache POI
- XML → JAXB
- JSON → Gson o Jackson
🗂️ Parte 2 – Validación y normalización
2. Validación con XML Schema y exportación a JAXB
Enunciado:
- Valida el archivo
religiones.xml
usando un esquema XSD. - Si es válido, conviértelo a objetos con JAXB.
- Exporta solo los datos de países con más de 3 religiones distintas y guárdalos como
destilado.xml
.
Tecnologías:
javax.xml.validation
- JAXB
🔎 Parte 3 – Persistencia relacional y no relacional
3. MongoDB + Hibernate simultáneos
Enunciado:
- Guarda las ciudades en MongoDB y los países + religiones en MySQL con Hibernate.
- Relaciona ambos mediante
id_pais
.
Objetivo extra:
- Implementa sincronización automática: si se borra un país de Hibernate, sus ciudades se eliminan en MongoDB.
Tecnologías:
- MongoDB Java Driver
- Hibernate con relaciones OneToMany + eventos
@PreRemove
💡 Parte 4 – Consultas compuestas
4. XQuery + MongoDB
A. XQuery:
Consulta desde eXistDB:
- Países con más de 2 ciudades y al menos una en la costa (> 0 km).
Consulta esperada:
for $p in //pais
let $ciudades := //ciudad[@pais=$p/@id_pais]
where count($ciudades) > 2 and some $c in $ciudades satisfies xs:decimal($c/km_linea_costa) > 0
return $p/nombre
B. MongoDB:
Consulta en MongoDB las ciudades:
- Que pertenezcan a países con idioma oficial «Español» o «Portugués»
- Y tengan más de 500.000 habitantes.
Consulta esperada:
db.ciudades.aggregate([
{
$lookup: {
from: "paises",
localField: "id_pais",
foreignField: "id",
as: "pais"
}
},
{ $unwind: "$pais" },
{
$match: {
"pais.idioma_oficial": { $in: ["Español", "Portugués"] },
"num_habitantes": { $gt: 500000 }
}
}
])
🧠 Parte 5 – Desafío final
5. App completa: Geografía y Religiones
Diseña una aplicación modular que:
- Importe los datos de los archivos anteriores.
- Almacene datos en MongoDB y Hibernate.
- Permita al usuario:
- Buscar un país por nombre y mostrar sus ciudades y religiones.
- Listar los países ordenados por
- Exportar los resultados como XML o JSON a elección.
- El usuario debe poder elegir si quiere trabajar solo con Mongo, solo con Hibernate, o ambos en espejo.
Consejo técnico:
- Usa interfaces para cargar y persistir datos (
CargadorXML
,PersistenciaMongo
,PersistenciaRelacional
). - Diseña DAO para cada entidad.
- Incluye logs y manejo de excepciones.
✅ Conclusión
Este examen final está pensado para que midas tu nivel como futuro profesional. Combina lectura, escritura, modelado, persistencia y consultas en múltiples formatos y tecnologías.
Si quieres el post en formato HTML puro, Markdown, o incluso un PDF imprimible, solo dímelo. También puedo generarte el código base de cada ejercicio o un repositorio Git de plantilla.