Ejercicios de Consultas: HQL y SQL
Se proporciona el fichero hib-sesion4.doc como plantilla para que contestéis a las preguntas formuladas en los ejercicios.
Vamos a utilizar el proyecto hib-sesion4, que se encuentra en el fichero sesion04-ejercicios.zip. En dicho proyecto realizaremos las modificaciones que se piden en los ejercicios propuestos.
Ejercicio 1: Consultas HQL
Utilizando el lenguaje HQL, se pide:
- Implementa los métodos private List listPujas(), private List listPersons(), y private List listArticulos(), en los ficheros PujaManager.java, PersonManager.java y ArticuloManager, respectivamente. Dichos métodos devuelven una lista con todas las pujas, personas y artículos respectivamente. Los botones etiquetados como "Print Pujas", "Print persons" y "Print Articulos" os servirán para probar los resultados de las consultas.
- Implementa el método public String print_pujasDePerson(Long idPerson) en el fichero PersonManager.java
que, dado el identificador de una persona, recupera todas las pujas asociadas a dicha persona.
Asocia el método implementado al botón con nombre PRINT PUJAS HQL.En el área de texto
del interfaz gráfico, se imprimirá la siguiente información: el identificador y el nombre de la persona, para cada una
de las pujas: el identificador y el nombre del artículo, la cantidad pujada, y la fecha de la puja. Así, por ejemplo,
para la persona con identificador 3, la información que se mostrará por pantalla será:
Listado de Pujas de la persona: 1
Nombre persona: Pepa
ARTICULO(ID) CANTIDAD FECHA
---------------------------------------------------------
Bufanda (2) 1000 12/oct/2007
Gorra (3) 100 14/ago/2006
Y para la persona con identificador 5 se mostrará por pantalla:
Listado de Pujas de la persona: 5
La persona 5 NO ha hecho ninguna puja
- Implementa el método public List hql_pujas(Long cantidad) en el fichero PujaManager.java que, dada una cantidad monetaria, recupera todas las pujas cuya cantidad pujada supere o iguale dicha cantidad. Las pujas estarán ordenadas ascendentemente por cantidad y por fecha de puja. La información concreta a recuperar para cada puja será: la cantidad monetaria, la fecha de la puja, el nombre e identificador del artículo pujado, y el nombre de la persona que realizó la puja.
- Implementa el método public String print_hql_pujas_on_Console(Long cantidad) en el fichero PujaManager.java,
que imprima en el área de texto
del interfaz gráfico la información de la consulta anterior. Asocia el método implementado al botón con nombre PRINT PUJAS HQL.
Así, por ejemplo, si llamamos al método con la cantidad 300,
aparecerá por pantalla lo siguiente:
Listado de Pujas mayores o iguales a 300 euros:
CANTIDAD FECHA ARTICULO(ID) PUJADOR
---------------------------------------------------------
300 10/oct/2007 Mechero (1) Juan
1000 12/oct/2007 Bufanda (2) Pepa
4000 05/dic/2007 Libro (5) Maria
Si no hay pujas superiores o iguales a la cantidad deseada, aparecerá el mensaje: "No se han encontrado pujas".
-
OPCIONAL. Implementa el método public List hql_getArticulosByEstado() en el
fichero PujaManager.java que obtenga, de entre todas las pujas, el número de artículos pujados con un determinado
estado, y el nombre de dichos artículos. Implementa el método public String print_hql_getArticulosByEstado(), que
imprima en el área de texto del interfaz gráfico el resultado de la consulta anterior. El formato es el siguiente:
Resultado de la consulta:
ESTADO ARTICULO NÚMERO DE PUJAS
------------------------------------------
Casi nuevo Mechero 3
Impecable Bufanda 2
Ejercicio 2: Consultas SQL
Utilizando el lenguaje SQL, implementa el método public String print_pujasDePerson_SQL(Long idPerson) en el fichero PersonManager.java. Es el mismo método que en el ejercicio 1, pero sustituye la query HQL por SQL. Utiliza una SQL con nombre. El nombre de la query será print_pujasDePerson_SQL y recuerda que debes incluirlo en el fichero de mapeado, en este caso, en el fichero Person.hbm.xml. Asocia el método implementado al botón con nombre PRINT PUJAS SQL..