Contenido verificado asociado a este RA
Bases de Datos Orientadas a Objetos (BDOO) y Objeto-Relacionales (BDOR): Ventajas e Inconvenientes
Esta unidad trabaja el criterio de identificar ventajas e inconvenientes de las bases de datos que almacenan objetos. Se analizan las Bases de Datos Orientadas a Objetos (BDOO) y las Objeto-Relacionales (BDOR) frente a los SGBD relacionales tradicionales, con ejemplos de productos reales, una tabla comparativa y un caso práctico de decisión tecnológica que el alumnado debe justificar.
Conexión a Bases de Datos y Persistencia de Objetos Simples
Esta unidad trabaja el establecimiento y cierre correcto de conexiones con una base de datos (CE 2938) y la gestión de la persistencia de objetos simples, es decir, aquellos sin relaciones complejas con otros objetos persistentes (CE 2939). Se emplean JDBC y JPA como tecnologías de referencia por ser mecanismos de acceso estándar y ampliamente usados en el desarrollo Java, sin que ello suponga una exigencia literal del currículo, que no impone herramienta concreta.
Persistencia de Objetos Estructurados y Consultas Avanzadas
Esta unidad profundiza en la gestión de la persistencia de objetos complejos que contienen referencias a otros objetos, y en el desarrollo de aplicaciones capaces de realizar consultas sofisticadas sobre estos datos estructurados.
Modificación de Objetos Almacenados y Gestión de Transacciones
Esta unidad aborda cómo actualizar el estado de los objetos persistentes en la base de datos y la importancia de las transacciones para garantizar la integridad y consistencia de los datos, especialmente en operaciones que involucran múltiples cambios.
Pruebas y Documentación de Aplicaciones con BDOO/BDOR
Esta unidad se centra en la importancia de probar y documentar adecuadamente las aplicaciones que interactúan con bases de datos orientadas a objetos o objeto-relacionales, asegurando su correcto funcionamiento y mantenibilidad.
Conceptos clave
Brecha de impedancia objeto-relacionalBases de Datos Orientadas a Objetos (BDOO)Bases de Datos Objeto-Relacionales (BDOR)Identidad de objetoTipos de datos definidos por el usuarioHerencia de tablas (PostgreSQL)Persistencia de objetosInteroperabilidad con herramientas de tercerosConexión a base de datos (apertura y cierre)Ciclo de vida de la conexión y liberación de recursosPersistencia de objetos simplesConstructor sin argumentos como requisito de persistenciaCiclo de vida CRUD de un objeto persistente (store/retrieve/update/delete)Objeto estructuradoGrafo de objetosPersistencia en cascadaLenguaje de consulta de objetos (OQL)Query by Example (QBE)
Errores que conviene evitar
- Error: creer que un ORM (por ejemplo Hibernate) convierte un SGBDR en una BDOO. Causa: ambos 'ocultan' el SQL al programador, lo que induce a pensar que hacen lo mismo. Corrección: un ORM sigue guardando los datos en tablas relacionales y solo automatiza el mapeo; una BDOO almacena el objeto directamente, sin tablas subyacentes.
- Error: asumir que adoptar una BDOO o BDOR es trivial para un equipo acostumbrado solo a SQL relacional. Causa: subestimar que el modelado de objetos, la navegación por referencias y las consultas específicas de cada motor exigen un aprendizaje distinto al de SQL puro. Corrección: planificar formación y pruebas de concepto antes de migrar un proyecto real a estas tecnologías.
- Error: pensar que PostgreSQL 'deja de ser relacional' por ofrecer tipos objeto. Causa: desconocer que las capacidades objeto-relacionales son una extensión, no una sustitución, del modelo relacional. Corrección: entender que PostgreSQL sigue siendo un SGBDR con SQL estándar, al que se añaden tipos compuestos y herencia de tablas.
- No cerrar la conexión, el EntityManager o el EntityManagerFactory: Causa: olvido o manejo incorrecto de excepciones. Consecuencia: fugas de recursos y agotamiento de conexiones disponibles en el servidor. Corrección: usar try-with-resources o garantizar el cierre en un bloque finally.
- Definir una clase persistible sin constructor sin argumentos: Causa: desconocer que el motor de persistencia instancia el objeto por reflexión al recuperarlo. Consecuencia: fallo al recuperar entidades desde la base de datos. Corrección: añadir siempre un constructor sin argumentos (puede ser protegido) además de los constructores con parámetros que use la aplicación.
- No configurar la persistencia en cascada: Causa: Olvido de anotaciones o configuraciones. Corrección: Asegurar que las relaciones entre objetos estén correctamente anotadas o configuradas para que la BDOO/ORM sepa cómo persistir el grafo de objetos completo.
- Consultas ineficientes sin índices: Causa: Realizar consultas sobre campos no indexados en grandes volúmenes de datos. Corrección: Identificar los campos más utilizados en las cláusulas `WHERE` y `ORDER BY` y crear índices sobre ellos.
- No usar transacciones para operaciones atómicas: Causa: Desconocimiento de las propiedades ACID. Corrección: Envolver todas las operaciones lógicamente relacionadas en un bloque transaccional para asegurar la integridad de los datos.