|
La persistencia de datos en una aplicación suele ser uno de los requerimientos no funcionales más frecuentes al desarrollar una aplicación. La transición entre los objetos del modelo de negocio y entidades relacionales (persistencia) lleva a diseños diferentes. Las principales diferencias como estructuración del modelo, tipos de datos, transacciones, manejo de herencia y polimorfismo implican un mayor tiempo para el desarrollo de la aplicación.
Hibernate es una implementación, java, de la técnica conocida como object/relational mapping (ORM) que facilita la realización de tareas de persistencia. Introduce una capa intermedia, entre los objetos de la aplicación y las tablas de la base de datos que, actúa de forma transparente para el desarrollador.
Las mayores ventajas ofrecidas por esta solución es reducir las líneas de código e independizar la aplicación del distribuidor de base de datos.
En el siguiente caso de estudio partiremos de una aplicación existente, la cual tiene su persistencia en archivos de texto. Realizaremos las modificaciones necesarias para llevar la persistencia a dos bases de datos, de proveedores distintos, de tal forma que sea posible ir del modelo conceptual del caso de estudio a una persistencia en una base de datos sin modelar las entidades relacionales, con solo algunos elementos de configuración y pequeños cambios en las entidades de negocio. |
|
|
Para la realización de este tutorial es necesario tenga conocimientos básicos en bases de datos y se encuentre familiarizado con herramientas como Eclipse, Derby y MySQL.
Igualmente se requiere que conozca sobre XML, para lo cual se utilizar una vista de editor XML dentro de Eclipse por facilidad de lectura del archivos de este tipo que se manejan en el tutorial. Adicionalmente puede descargar el siguiente entrenador de XML ( descargar entrenador ) del curso de estructuras de datos y cargar en este los archivos xml adjuntos con la solución del tutorial.
Para retomar conceptos sobre Derby y nociones básicas de SQL diríjase al nivel 12 del curso de Algorítmica y Programación 2 del proyecto. |
|
Se quiere crear una aplicación ( miDiscoTienda ) para el manejo de la información de una tienda virtual de canciones en formato MP3. Esta aplicación debe permitir visualizar un catálogo de discos y canciones que la tienda tiene a la venta. Cada disco tiene un nombre, un artista, un género y una imagen de la carátula del disco. La tienda se especializa en la venta de canciones en formato MP3 por lo que ofrece toda la información relevante de una canción al usuario. Esta información comprende: el nombre de la canción, su precio individual, la duración en minutos y segundos, el tamaño en megabytes(MB) y la calidad de la canción expresada en kilobytes por segundo (Kbps).
Se espera que miDiscoTienda cuente con la siguiente funcionalidad: (1) presentar al usuario la información de una canción del catálogo (dados el nombre del disco y el nombre de la canción), (2) agregar un disco al catálogo, el cual estará sin canciones inicialmente, (3) agregar una canción a un disco (dados el nombre del disco y toda la información de la canción), (4) vender una canción a un usuario. En este caso se debe teclear la dirección electrónica del usuario para que le sea enviado por correo el respectivo archivo MP3 con la canción. Por cada venta, el programa debe crear un registro en una base de datos, con un Id numérico único generado por la base de datos. El programa debe llevar el registro del número de copias vendidas de cada canción. Por último, (5) el programa debe permitir procesar un archivo completo de pedidos de un cliente. En este caso se hace una sola factura.
La información de la tienda debe ser persistente y el proceso debe ser completamente transparente para el usuario. Esto quiere decir que el programa debe ser capaz de guardar la información en una base de datos cada vez que el usuario ingresa un disco o una canción, y el usuario debe poder utilizar dicha información cuando el usuario vuelve a ejecutarlo para reconstruir el estado del modelo del mundo.
En caso de cualquier error en la ejecución del programa, éste debe presentar una caja de diálogo con un mensaje claro que explique la razón del problema. La siguiente es una lista de los errores que se pueden presentar y el tipo de acción que debe realizar el programa:
|
Errores que se pueden presentar
|
Acción del Programa
|
|
Al intentar agregar un nuevo disco, el programa se da cuenta de que ya existe un disco con ese título.
|
Mensaje al usuario con el error. El nuevo disco no es agregado.
|
|
Al intentar agregar una nueva canción a un disco, el programa se da cuenta que ya existe una canción con ese nombre.
|
Mensaje al usuario con el error. La nueva canción no es agregada.
|
|
Los datos dados por el usuario no son válidos (el precio no es un valor numérico, o el nombre de la canción es vacío).
|
Mensaje al usuario con el error. El nuevo disco o la nueva canción no son agregadas.
|
|
Al intentar leer el archivo de pedidos, no lo encuentra en el sistema de archivos.
|
Mensaje al usuario con el error.
|
|
Al intentar leer el archivo de pedidos, el programa se da cuenta que éste no tiene el formato pedido.
|
Mensaje al usuario con el error. Si el error impide la venta global, se anula todo el proceso. Si no, se venden las canciones que tengan el formato pedido, y en la factura se señala cuáles canciones no se pudieron incluir en la venta por un problema de formato.
|
|
Al hacer una venta, el usuario no suministra una dirección electrónica válida.
|
Mensaje al usuario con el error. La venta no se hace y no se emite ninguna factura.
|
Formato del pedido
El formato de un archivo con los pedidos de un cliente es el siguiente:
< correo del cliente > < nombre del disco >#< nombre del artista >#< nombre de la canción >
Cada línea del archivo, a excepción de la primera, representa la información de una canción que el usuario desea comprar. Ejemplo:
Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla
Confessions on a Dance Floor#Madonna#Sorry Push the Button#The Chemical Brothers#The Boxer
Interfaz



|
|
Requerimientos Funcionales |
|
|
|
|
Nombre
|
R1 – Mostrar la información de una canción
|
|
Resumen
|
Muestra al usuario el precio, tamaño, duración, calidad y unidades vendidas de una canción del catálogo
|
|
Entradas
|
|
Nombre del disco
|
|
Nombre de la canción
|
|
Resultados
|
|
Se mostró al usuario la información de la canción.
|
|
Nombre
|
R2 – Agregar un disco al catálogo
|
|
Resumen
|
Agrega un disco al catálogo sin canciones
|
|
Entradas
|
|
Nombre del disco
|
|
Artista
|
|
Género de música
|
|
Nombre del archivo de imagen de la carátula
|
|
Resultados
|
|
Si toda la información es correcta el disco fue creado en la discotienda con la información del nombre, artista, género y nombre de imagen. El disco quedó sin canciones.
|
|
Ya existe un disco con el título dado. Se mostró al usuario el mensaje con el error. El nuevo disco no fue agregado.
|
|
Los datos dados por el usuario no son válidos (el nombre del disco, el artista, el género y/o la imagen son vacíos). Se mostró un mensaje al usuario con el error. El nuevo disco no fue agregado.
|
|
Nombre
|
R3– Agregar una canción a un disco
|
|
Resumen
|
Agrega una nueva canción en formato Mp3 con su información completa a un disco
|
|
Entradas
|
|
Nombre de la canción
|
|
Duración en minutos y segundos
|
|
Precio
|
|
Calidad (en Kbps)
|
|
Tamaño (en MB)
|
|
Resultados
|
|
Si la información es correcta, la canción es agregada al disco.
|
|
Ya existe una canción con el nombre dado. Se mostró el mensaje al usuario con el error. La nueva canción no fue agregada.
|
|
Los datos dados por el usuario no son válidos (el precio no es un valor numérico, o el nombre de la canción es vacío). Mensaje al usuario con el error. La nueva canción no fue agregada.
|
|
Nombre
|
R4 – Vender una canción
|
|
Resumen
|
Vender una canción a un usuario dado su correo electrónico.
|
|
Entradas
|
|
Dirección electrónica del usuario
|
|
Nombre del disco
|
|
Nombre de la canción
|
|
Resultados
|
|
Si toda la información es correcta, la cantidad de unidades vendidas de la canción se incrementó en 1.
|
|
Si toda la información es correcta, se generó una factura.
|
|
El usuario no suministró una dirección electrónica válida. Se mostró el mensaje al usuario con el error. La venta no se realizó y no se emitió ninguna factura.
|
|
Nombre
|
R5 – Atender Pedido Cliente
|
|
Resumen
|
Procesar el pedido de un cliente a partir de un archivo
|
|
Entradas
|
|
Archivo con el pedido del cliente. El formato del archivo es el siguiente:
< correo del cliente >
< nombre del disco >#< nombre del artista >#< nombre de la canción >
|
|
Resultados
|
|
Si la información del archivo es correcta, se incrementó en uno la cantidad de unidades vendidas de cada una de las canciones del pedido.
|
|
Si la información del archivo es correcta, se generó una única factura por todo el pedido.
|
|
Durante la lectura del archivo de pedidos, hubo un error de entrada / salida. Se mostró un mensaje al usuario con el error. La venta se hizo hasta donde se pudo leer el archivo. Se generó una factura parcial con la venta.
|
|
El archivo de pedidos no tiene el formato pedido. Se mostró un mensaje al usuario con el error. Si el error impidió la venta global, se anuló todo el proceso. Si no, se vendieron las canciones que tenían el formato pedido, y en la factura se señala cuáles canciones no se pudieron incluir en la venta por un problema de formato.
|
|
El usuario no suministró una dirección electrónica válida. Se mostró el mensaje al usuario con el error. La venta no se realizó y no se emitió ninguna factura.
|
|
|
Requerimientos No Funcionales |
|
|
|
|
Tipo
|
Persistencia
|
|
Descripción
|
La información del modelo del mundo debe ser persistente.
El proceso de hacer persistente la información debe ser transparente para el usuario (no participa en el proceso).
Se debe poder usar una base de datos (Derby o MySQL).
Se debe usar un framework sirva de intermediario en la persistencia como Hibernate.
|
|
|
|
|
|
<< Inicio < Anterior 1 2 3 4 Siguiente > Fin >>
|
|
Página 1 de 4 |