Il secondo progetto formativo dello stage, Oncode MCU, simula la prenotazione dei biglietti cinematografici di un’ipotetica struttura che trasmette nelle sale i film appartenenti al Marvel Cinematic Universe.
Se per il primo mi ero affidato alla coppia Angular/Spring Boot, questa volta l’obbiettivo era realizzare un progetto Java based sfruttando Spring MVC applicato alle viste renderizzate in Thymeleaf. A differenza del primo, in cui potevo andare a braccio con la realizzazione, questa volta mi è stato chiesto di portare a termine lo zoccolo duro della stessa in una settimana. Lo scopo ovviamente era iniziare a mettere in conto il fattore ore anche per percepire la gestione del tempo e, soprattutto, quanto me ne serve versus quanto me ne dovrebbe servire.
La fase iniziale è stata abbastanza semplice, fino a che non mi sono scontrato con due problemi non preventivati: la relazioni tra le tabelle e Lombok. Abusare di Lombok per evitare di scrivere codice, setter, getter o costruttori non è sempre una buon idea. A prescindere da un paio di errori di valutazione OneToOne piuttosto che OneToMany, lasciare l’automatismo Data mi ha fatto perdere una giornata inutilmente, considerando che l’errore era nella parte Spring Data scritta invece correttamente. Sotto certi aspetti il problema è stato provvidenziale per capire definitivamente la logica delle relazioni tra tabelle ed entità di Hibernate e JPA Repository, ma anche per fissare nuovamente i concetti delle relazioni ManyToMany ed implicazioni nei Set.
Cambio quasi indolore tra il solito MySQL installato sul notebook e PostgreSQL in contenitore Docker, una volta aggiornati pochi parametri e dependecy, lo Spring Data ha reso trasparente il problema di interfaccia ad un DB che ho usato poco.
La difficoltà maggiore è stata quella di legare il Model alla View. L’abitudine di avere proprietà esposte in Angular, ha creato un’iniziale confusione su come gestire i cambiamenti in maniera reattiva, senza dover ricaricare l’intero Model. Dalle ricerche effettuate l’unica modalità, senza entrare in altre librerie complesse, era utilizzare Javascript o JQuery.
Finito per tempo, il progetto Oncode MCU, è stato migliorato con le Websock. Dopo diverse prove ho scelto di prendere la via più complessa implementandole via STOMP e SockJs così da poter sfruttare interi oggetti al posto di JSON. Essendo la prima esperienza, è stata usata soltanto per aggiornare in tempo reale la situazione biglietti sui client web man mano che un utente ne acquistava, ma è stato utile per capirne il funzionamento e potenzialità. E tutto sommato anche per un ripasso su JQuery, grazie a cui cambiano dinamicamente i posti a sedere.
Allo stato attuale, secondo il tutor, è il momento per cercare un progetto con un cliente reale, così da scontrarsi definitivamente con tutte le sfaccettature legate alla programmazione di una webapp enterprise a 360°. Nel mentre il primo obbiettivo è quello di approfondire il discorso dei Design Patterns per strutturare meglio il codice e renderlo più leggibile anche per i colleghi che mi supporteranno nella mia prima avventura reale.
Insomma, tra Singleton e Factory, attendo il colloquio di domani …