Salta el contingut

1. Serveis d'Acces a Dades

Versió Data Notes
Versió 1.0 Desembre 2022 Versió inicial
Versió 2.0 Setembre 2023 Haetoas
Versió 1.0 Octubre 2024 Traduccions

© Joan Gerard Camarena Estruch

  • Aquests materials es basen en apunts d'anys anteriors creats per Joan Gerard Camarena i Jose Alfredo Murcia.
  • Agraïments especials a Loren Diaz de Haro per compartir el seu material i exemples de codi.

1. Introducció. Serveis d'Accés a Dades

Un servlet és una aplicació que s'executa en un servidor, preparada per respondre a sol·licituds http. Més tard tenim JSP (Java Server Pages), que permeten combinar elements HTML/XML amb fragments de codi Java per generar contingut dinàmicament. Hem de llançar un servidor d'aplicacions i afegir l'aplicació per executar-la i servir-la com una altra pàgina.

Podem utilitzar Servlets per escriure una aplicació web, però hi ha molts detalls intrínsecs a controlar: validació, REST, cos de la sol·licitud/resposta per a JSON, vinculació de formularis, etc. Això implica que gran part del nostre codi es dedica a controlar les capes inferiors de comunicació.

Amb el framework Spring, realment utilitzem servlets, però allibera el programador d'aquesta tasca pesada, gestionant-la automàticament. Això permet al programador centrar-se en la lògica de l'aplicació, sense haver de gestionar els nivells inferiors de comunicacions. A més, Spring Boot es defineix com un accelerador de Spring, permetent-nos indicar una sèrie de convencions (comportaments) que realitzen tasques pesades de configuració d'arxius per a nosaltres. Finalment, Spring Boot incorpora un servidor web integrat (normalment Tomcat).

El terme framework o si intentem forçar la seva traducció al català Marc de treball ens proporciona un conjunt de regles i eines dissenyades per augmentar la velocitat de desenvolupament d'aplicacions.

2. MVC

El Model Vista Controlador (MVC) és una arquitectura per al desenvolupament d'aplicacions que separa les dades, la interfície i la lògica de control en capes.

![MVC](./img/MVC.png){width=95%}

El funcionament és el següent:

  1. L'usuari està utilitzant l'aplicació client (normalment un navegador o client), i fa una sol·licitud a través del protocol http, també coneguda com una HTTP_REQUEST. Aquestes sol·licituds són rebudes pel mòdul controlador. El controlador gestiona una llista d'operacions o esdeveniments que pot processar, determinats pel seu propi protocol.
  2. En el cas d'una sol·licitud que demana una consulta o modificació de les dades, passem els paràmetres proporcionats en la sol·licitud a la capa del model. Aquesta capa accedeix a les dades, realitzant els passos 3 i 4 a través d'operacions del SGBD. El Model ara està en condicions de donar una resposta.
  3. Consultar la base de dades.
  4. Recuperació de la consulta de la base de dades.
  5. El model transfereix el conjunt de resultats obtinguts a la vista.
  6. La vista és responsable de rebre les dades i presentar-les o formatar-les adequadament.
  7. El controlador retorna la presentació generada per la vista (que normalment serà HTML dinàmic) a l'aplicació client, a través de la sol·licitud HTTP_RESPONSE.

3. REST

El model REST (Representational State Transfer) ens permet proporcionar al nostre servidor un servei per recuperar i manipular dades fàcilment al servidor. En aquest model, la part de la vista es delega al client, deixant el controlador i el model al servidor. En aquest model, destacarem entre altres:

  • El protocol segueix el model client/servidor sense estat, igual que http, una sol·licitud només respondrà segons la informació rebuda en la mateixa sol·licitud, sense tenir en compte totes les anteriors.
  • Suport d'operacions CRUD, a través de les especificacions http equivalents: GET (consulta), POST (crear), PUT (modificar) i DELETE (eliminar).
  • Disposició del model HATEOAS (Hypermedia As Engine Of The Application State). Aquest principi permet incloure hipervincles com a recursos en les respostes.

En MVC, i de manera simplificada, seria eliminar la capa de la vista i retornar les dades processades pel model. Normalment els servidors REST retornen dades en format JSON.