Implementació d'un sistema de gestió de la qualitat ISO-9001
MyFrameUOC : Disseny i implementació d'un framework de ...
Transcript of MyFrameUOC : Disseny i implementació d'un framework de ...
![Page 1: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/1.jpg)
MyFrameUOC
Jordi Garcia Casanova
14 de Gener del 2013
Universitat Oberta de Catalunya (UOC)
Disseny i implementació d’un
framework de persistència per a
J2EE
![Page 2: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/2.jpg)
2
MyFrameUOC
• Problemàtica del mapeig d’entitat-relació
• Objectius del projecte
• Frameworks de persistència existents
• Naixement de MyFrameUOC
• Característiques de l’eina
• Mètode seguit
• Implementació
• Exemple
• FootballTeam: aplicació de prova
• Conclusions
![Page 3: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/3.jpg)
Problemàtica del mapeig d’entitat-relació
MyFrameUOC
![Page 4: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/4.jpg)
Objectius del projecte (I)
• Facilitar i agilitzar la implementació de la capa de d’administració de dades.
• Millorar el rendiment i la productivitat del desenvolupador.
• Solucionar el problema del mapeig d’entitat-relació.
MyFrameUOC
Dissenyar i implementar un framework de
persistència (MyFrameUOC).
![Page 5: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/5.jpg)
Objectius del projecte (II)
• Estudiar i avaluar els frameworks de persistència que hi ha disponibles al mercat.
MyFrameUOC
Recopilar informació per definir les característiques
que ha de tenir MyFrameUOC.
![Page 6: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/6.jpg)
Frameworks de persistència existents (I)
MyFrameUOC
• Un EJB d’entitat representa una dada. • S’utilitza un descriptor de desplegat (fitxer XML) per definir el mapeig entre l’EJB d’entitat i la BD. • Fàcilment escalable. • Difícil d’aprendre. • Llenguatge de consultes EJB QL.
EJB d’entitat
![Page 7: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/7.jpg)
Frameworks de persistència existents (II)
MyFrameUOC
Java Data Objects (JDO)
• Estàndard que serveix per a fer persistents objectes de Java.
• És transparent als detalls d’implementació del mapeig entre objectes i BD.
• Es poden utilitzar diferents tipus de BD.
• Descriptor de persistència (fitxer XML) per definir el mapeig.
![Page 8: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/8.jpg)
Frameworks de persistència existents (III)
MyFrameUOC
iBatis
• Framework de persistència híbrid.
• Combina solucions i idees d’altres solucions.
• S’utilitzen consultes SQL per fer el mapeig.
• Dos fitxers XML de configuració:
• SqlMapConfig.xml: configuració opcions generals.
• SqlMap.xml: consultes de mapeig.
![Page 9: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/9.jpg)
Frameworks de persistència existents (IV)
MyFrameUOC
Java Persistence API (JPA)
• Simplifica la persistència d’objectes Java.
• Permet definir de forma declarativa el mapeig entre els objectes Java i les taules de la BD.
• Anotacions: codi que s’afegeix a les classes per fer el mapeig.
• Llenguatge de consultes JPQL.
• Exemple:
![Page 10: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/10.jpg)
• Implementa l’estàndard JPA.
• Alternativa: fitxers XML per definir el mapeig.
• Llenguatge de consultes HQL.
• Existeix molta documentació.
• Consumeix molts recursos.
Frameworks de persistència existents (V)
MyFrameUOC
Hibernate
Anotacions
No recomanable per a grans quantitats de dades.
![Page 11: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/11.jpg)
Naixement de MyFrameUOC MyFrameUOC
A partir dels coneixements adquirits en la investigació s’obtenen les característiques que ha de tenir MyFrameUOC.
![Page 12: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/12.jpg)
Característiques de l’eina (I) MyFrameUOC
• Emmagatzemament
• Recuperació
• Actualització
• Eliminació
![Page 13: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/13.jpg)
Característiques de l’eina (II) MyFrameUOC
• Fitxer de configuració per definir la connexió amb la BD.
• Anotacions pròpies per configurar la persistència de les classes.
• Tipus de dades: boolean, char, String, int, float, Integer, Float, double, Double, BigDecimal, Time, Date, BigInteger...
• Claus foranes
• Relacions d’un a un (1 a 1)
• Relacions d’un a molts (1 a N)
• Relacions de molts a molts (N a M)
• Llenguatge propi UOCQL
![Page 14: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/14.jpg)
Mètode seguit MyFrameUOC
• Cicle de vida clàssic o en cascada
• Model de referència RM-ODP
![Page 15: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/15.jpg)
Implementació (I) MyFrameUOC
• Classe Session: permet que l’usuari interactuiï amb l’eina.
• Classe EntityManager: gestiona l’emmagatzematge en memòria de les classes persistents mapejades.
• Classe RegisteredEntity: mapeja una classe persistent (crea les sentències SQL que són necessàries executar per a dur a terme les operacions CRUD d’un objecte).
![Page 16: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/16.jpg)
Implementació (II) MyFrameUOC
• Classes específiques per a gestionar les sentències SQL que utilitzen les classes persistents mapejades.
• L’accés a la BD es realitza mitjançant les llibreries JDBC.
• Primera versió MyFrameUOC: Oracle y MySQL.
• És fàcil extendre l’eina per a altres SGBD.
• Manteniment poc costós.
• Escalable.
• Gestió d’excepcions per a controlar els errors.
• Proves JUnit per a realitzar el test de l’eina i garantir una mínima qualitat de producte.
![Page 17: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/17.jpg)
Exemple MyFrameUOC
![Page 18: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/18.jpg)
FootballTeam: aplicació de prova (I)
MyFrameUOC
• Desenvolupament d’una petita aplicació J2EE que mostra el funcionament de MyFrameUOC. • FootballTeam és una aplicació web que gestiona equips de futbol, jugadors i entrenaments.
![Page 19: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/19.jpg)
FootballTeam: aplicació de prova (II)
MyFrameUOC
• Equips
• Jugadors
• Entrenaments
![Page 20: MyFrameUOC : Disseny i implementació d'un framework de ...](https://reader036.fdocumento.com/reader036/viewer/2022070610/62c30e4a8122720c77767f54/html5/thumbnails/20.jpg)
Conclusions MyFrameUOC
• S’aconsegueix obtenir una eina que facilita el
desenvolupament de la capa d’integració de les aplicacions J2EE. • L’eina permet fer les operacions CRUD. • Es poden utilitzar claus foranes, relacions d’un a un, relacions d’un a molts i relacions de molts a molts. • Es treballa en cascada per defecte: una millora seria poder configurar aquest comportament. • Encara es podria ampliar els tipus de dades que es poden utilitzar (int[], String[], etc.). • Refinament anotacions per a les relacions. • No es permet l’herència i polimorfisme. Aquesta podria ser una ampliació de l’eina.