Notes sobre l'enunciat i pràctica
Aquesta pràctica és d'enunciat obert. Has de crear la teua pròpia tasca, amb certes limitacions, com comprendràs. Has de fer un programa que faça el manteniment d'una base de dades a la teua elecció: podràs crear-la de zero o escollir-ne alguna que conegues o cercar a internet.
1. La base de dades
Les restriccions de la base de dades són:
- Ha de contenir com a mínim tres entitats.
- Ha de contenir com a mínim tres relacions, una de cada classe:
1-1,1-MiN:M. Si vols, pots crear una relació reflexiva. - Utilitza MySQL com a SGBD.
Has de tenir en compte que la BBDD ha de ser generada per les teues classes Java mitjançant Hibernate. Per tant, has de dissenyar la base de dades tenint en compte les limitacions i característiques d'aquest ORM.
2. El programa
2.1. Estructura
Crea un programa gestionat per Hibernate amb l'objectiu de realitzar les operacions bàsiques de CRUD a la base de dades (Create, Read, Update i Delete). Hauràs de mapejar totes les entitats i relacions de la base de dades per a guardar tota la informació. Amb aquest mapeig, hibernate et permetrà crear la base de dades des de zero (si no existeix) i realitzar totes les operacions necessàries.
Amb alguna eixa del Workbench o similar que conegues, crea una imatge de l'estructura de la teua base de dades i afegeix-la al teu repositori.
CHECKPIONT 1
Abans de continuar programant, has de presentar al professor el teu disseny de la base de dades. Aquest punt és obligatori per a continuar amb la pràctica.
Sense el vist i plau del profeessor, es recomana no continuar amb la pràctica, ja que si es fa cap canvi, serà necessari reprogramar moltes parts del projecte.
A la entrega de la tasca podràs deixar auqesta imatge junt a l'enllaç del repositori github del projecte.
2.2. CRUD
Com tot el treball de cada entitat és el mateix (canviant el nom de l'entitat), només has de crear un CRUD complet per a una entitat. A continuació, crea mètodes per inserir, eliminar, actualitzar i seleccionar informació d'una entitat.
2.3. Relacions
Imagina que tenim una relació 1:M, un Autor escriu diversos Llibres. Has de fer un menu (lliure) per a gestionar les teues relacions i taules. Amb les teves pròpies relacions, fes el mateix de la següent manera:
2.3.1. Tasca 1. Llistats bàsics/complexos
Has de mostrar registres d'una entitat (tots els registres, sense cap mena de filtre):
- Per exemple que una opció de menú siga
mostra Autor. Aquesta comanda mostrarà tots els autors de la base de dades. - Però si la comanda és
mostra -r Autor, mostrarà per a cada autor els llibres que ha escrit. (rsignifica recursivament)
La opció de
-ro--recursivaments'ha d'implementar per a totes les entitats que tinguen relacions amb altres entitats. Això indica que si un autor té llibres, s'han de mostrar també els llibres (la informació que consideres). Si un llibre té editorials, s'han de mostrar també les editorials, i així successivament.
Vigila
Has de controlar que no es produeixin bucles infinits en les relacions. Per exemple, si un autor té llibres, i cada llibre té un autor (relacions bidireccionals), i aquest autor té llibres, i així successivament. Has de controlar que això no passe.
2.3.2. Tasca 2. Noves Dades.
Quan vulguis inserir un nou Llibre:
- Pots executar
afegir Llibre, a continuació, de manera interactiva, el programa demanarà els valors dels atributs del llibre i el crearà i emmagatzemarà a la base de dades, establint l'Autor com anull. - Però si executes
afegir -r Llibre, el programa desprès de demanar els atributs propis del llibre, voldrà saber quin és l'autor d'eixe llibre. Llavors mostrarà tots els autors de la base de dades. L'usuari en seleccionarà un, i aquestAutores configurarà com a autor del llibre. - En el procés de selecció de l'Autor (que podria ser el ID, un cop llistat els autors), hi haurà una opció addicional (Autor 0, per exemple), que indica que l'autor del llibre no estigui a la base de dades. Llavors el programa demanarà les dades del nou Autor crearem un nou Autor i després l'assignarem al Llibre. Tant l'Autor com el Llibre es desaran a la base de dades.
2.3.3. Tasca 3. Filtrats o consultes
Es tracta de deseenvolupar consultes sobre la base de dades que has creat. Has de crear un menú amb les següents consultes (adaptades a la teua base de dades):
- Llistat complet d'una entitat (per exemple, tots els Autors) que eel nom tingui una lletra o coincidisca.
- Llistat complet d'una entitat a partir de les seues relacions (per exemple, tots els Autors que han escrit un llibre que al títol tinga
Java). -
Consultes amb dos paràmetres, per exemple:
-
Autors que han escrit 3 llibres de França.
- Llibres publicats entree els anys 2020 i 2024.
- Autors que han escrit llibres amb més de 200 pàgines i publicats per una editorial concreta.
- Altres 3 consultes que se t'ocurren a tu i quee tinguen sentit amb la teua base de dades.
Suggeriment
Per a desenvolupar aquestes consultes, has d'utilitzar HQL. En la mesura que pugues crea les consultes amb Named Queries i Criteria API.
3. Entregues i format d'entrega.
Per pujar la tasca a la plataforma, només cal que escriguis un enllaç a un repositori privat de GitHub de l'estudiant. Has d'afegir l'usuari del teu professor com a convidat del teu repositori (joange - jgcamarena@ieseljust.com). La tasca es presentarà amb els següents punts.
En la carpeta del teu treball has de tenir, en acabar tota la pràctica:
- Un script amb la creació de taules de la base de dades i alguna dada d'exemple. Has de generar-ho amb MySQL Workbench sql dump. Aquest scrip el tens que crear desprès d'haver inserit ja dades a la base de dades mitjançant el teu programa.
- Una imatge de l'estructura de la teva base de dades, creada amb MySQL Workbench reverse engineering o eina similar. Aquesta imatge s'eentrega al Checkpoint 1.
- El projecte Maven que implementi els requisits d'aquest text.
- Fitxer
Readme.mdamb documentació sobre el teu programa i característiques que consideres.
3.1. Punt de control 1. La base de dades.
En aquesta tasca has de presentar el teu repositori quan hagis acabat les parts 1 del programa. El professor et donarà el OK abans de començar a programar la part 2.
3.2. Punt de control 2. El programa.
Quan hagis acabat la tasca, presenta el teu repositori.
(c) Joan Gerard Camarena Estruch, novembre 2022