Hibernate
Motivación PDF Imprimir Correo electrónico

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.

 
Prerrequisitos PDF Imprimir Correo electrónico

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.

 
Enunciado PDF Imprimir Correo electrónico

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

Interfaz de usuario de la tienda

Diálogo para crear un disco

DDiálogo para crear una canción

 
Requerimientos Funcionales PDF Imprimir Correo electrónico

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 PDF Imprimir Correo electrónico

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