Ventura Samuele: 793060
Repository gitlab: https://gitlab.com/s.ventura/assignment3.git
Per il progetto si è scelto di modellare il dominio rappresentante i voli, secondo il seguente schema:
Si è sfruttato Hibernate per la persistenza delle entità e per cofigurare la connessione al database MySQL.
Le entità implementate sono:
- Compagnia che rappresenta una compagnia aerea che offre dei voli
- Aereo che rappresenta i modelli di aerei che eseguono precisi voli
- Aeroporto per rappresentare l'aeroporto di partenza e arrivo
- Volo che rappresenta il volo offerto da una compagnia, eseguito da un certo aereo, con determinati aeroporti e in certe date
Si sono definite le seguenti relazioni:
- Una self-relation in Compagnia che indica la possibilità di un gruppo di compagnie con a capo una di queste
- Una relazione one-to-many tra Compagnia e Volo perché una compagnia offre più voli mentre un volo è offerto da una sola compagnia
- Una relazione one-to-many tra Aereo e Volo perché si è immaginato che un volo fosse eseguito dal solito aereo
- Due relazioni one-to-many tra Aeroporto e Volo per rappresentare l'aeroporto di partenza e arrivo
Per sviluppare il progetto si è sfruttato Maven e quindi possibile importare il progetto da gitlab come progetto maven esistente e automaticamente verrano scaricate le librerie necessarie, se si necessità di altre librerie o dipendenze è possibile modifacare il file pom.xml
Per la persistenza su DB si è sfruttato MySQL 5.7 quindi è necessario averlo installato e creare un utente con nome = prova e password = prova. Oppure è possibile modificare utente e password con cui connettersi nel file persistence.xml.
Il database viene creato se non è già esistente.
Per il progetto sono stati implementati solo dei casi di test senza una GUI interattiva.
I package del progetto e le varie classi sono strutturati come segue:
- nella cartella src/main/java ci sono i seguenti package:
com.samuele.orm.entitiesin cui sono presenti le classi che definiscono le entità modellate.com.samuele.orm.repositoriesin cui si sono implementati i metodi base per le operazioni CRUD.com.samuele.ormservicesin cui si sono implementati i servizi che richiamano le operazioni CRUD all'interno di una transazione.com.samuele.orm.dbManagerin cui si è definito un metodo sfruttato nell'esecuzione dei test per ripulire il database.
- nella cartella src/test/java ci sono i seguenti package:
com.samuele.orm.servicesnel quale vengono testate le operazioni base di CRUD sulle varie entità. E' stata creata una classe per ogni entità ed eseguendo la classeTestAllEntitiesè possibile eseguire tutte le classi di test del package insieme.com.samuele.relationsin cui si testano invece le varie relazioni tra le entità create. EseguendoTestAllRelationsè possibile eseguire tutte le classi di test del package insieme.
