myframeuoc : disseny i implementació d'un framework de

20
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

Upload: others

Post on 04-Jul-2022

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MyFrameUOC : Disseny i implementació d'un framework de

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

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

Problemàtica del mapeig d’entitat-relació

MyFrameUOC

Page 4: MyFrameUOC : Disseny i implementació d'un framework de

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

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

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

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

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

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

• 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

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

Característiques de l’eina (I) MyFrameUOC

• Emmagatzemament

• Recuperació

• Actualització

• Eliminació

Page 13: MyFrameUOC : Disseny i implementació d'un framework de

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

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

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

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

Exemple MyFrameUOC

Page 18: MyFrameUOC : Disseny i implementació d'un framework de

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

FootballTeam: aplicació de prova (II)

MyFrameUOC

• Equips

• Jugadors

• Entrenaments

Page 20: MyFrameUOC : Disseny i implementació d'un framework de

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.