Transactionnelles

publicité
Java Data Objects
TM
Présentation et Analyse
Par :
Fouad KHELOUIATI
Walid KTATA
Ghislain NGANTCHAHA
Plan de l’exposé

Introduction








Définition JDO
Positionnement JDO
Caractéristiques de haut niveau
Architecture JDO
Étude de cas
Implémentations de JDO
Positionnement par rapport aux Concurrents
Conclusion
Introduction :
La persistance


La persistance
La persistance du point de vue de JAVA



SGBDR et JDBC
Système de Fichier et la sérialisation
ODMG et SGBDO
Introduction:
Java Data Objects

API définissant la persistance d’objets Java

Objectifs du point de vue de la persistance :



Transparente
Portable
transactionnelle
Introduction :
Positionnement de JDO
Sérialisation JDBC
SGBDO
JDO
Transactionnelle
NON
OUI
OUI
OUI
Interrogation
NON
NON
OUI
OUI
API normalisé
java.io
JDBC
ODMG
JDO
SQL
OQL
JDOQL
SGBDR
SGBDO
SGBDO,
SGBDR,
Système de fichier, etc.
Langage de
requête normalisé
Système
de stockage
Système
de fichier
Qualités de JDO(1/3)
Sécurité et aspect transactionnel
Performance
Transparence
JDOQL
Scalabilité
Intération
avec
d’autres
Facilité d’utilisation technologies
Standard
Qualités de JDO(2/3)
Un standard
• Une seule interface pour la persistance et un langage commun
• Des implémentations adaptés aux besoins
La Transparence
• Aucun code spécifique pour la persistance
La Facilité d'utilisation
• Même modèle pour les objets et les données
• Se concentrer sur les objets métiers
L’intégration avec d'autres technologies
• Mariage EJB session Beans et JDO
• Des implémentations optimisées selon les gestionnaires de données.
•Intégration avec J2EE.
Qualités de JDO(3/3)
La Performance
• Chargement en mémoire des objets incrémentale
La Sécurité et l’aspect transactionnel
• Support des transactions ACID
• On peut dire :Intègre les fonctionnalités d’un OTM
La Scalabilité
• BD relationnelles,BD Objets,mainframe,ERP,etc.
• Applications d’entreprise, Embarquées, Standalone.
• Favorise les optimisations majeurs selon la cible.
Indépendance
• Indépendance de l’implémentation du vendeur.
JDOQL
• Plus de dépendance avec SQL.
• Migration vers OODBMS est très naturel et consistante
Composantes principales de l’architecture JDO
JDOHelper
PersistenceManagerFactory
1
Instance
persistante
*
StateManger
1
1
*
1
*
PersistenceManager
Transaction
1
1
*
Extent
1
1
*
Instance
Transitoire
*
PersistenceCapable
Query
Environnements pour JDO

Environnement non géré

Environnement géré
Identification des Instances JDO


Identité Source de données
Identité d’application
Identité
non durable
Architecture dans les applications JVM
David Jordan et Craig Russell : www.onjava.com/lpt/a/3912
Étude de cas :
Objectifs

Environnement de développement

Déclaration de la persistance

Opérations sur les objets : Lecture,
écriture, suppression, …
Étude de cas :
environnement de développement
Fichier
Description
jdo.jar
Interfaces standards et classes définies
dans les spécifications de JDO.
jdori.jar
Implémentation de référence des spécifications de JDO.
btree.jar
Utilisé pour gérer le stockage des données dans des fichiers.
jta.jar
L’API Java Transaction.
(http//java.sun.com/products/jta/index.html)
antlr.jar
Analyseur syntaxique utilisé par JDOQL. (www.antlr.org)
xerces.jar
Utiliser pour l’analyse syntaxique des fichiers XML.
(http://xml.apache.org/xerces-j/)
Étude de cas :
environnement de développement
Répertoire
Description
src
Contient les sources de l’application.
class
Contient les classes compilées.
enhanced
Contient les classes optimisées
database
Contient les fichiers utilisés par l’implémentation
de référence pour stocker les données persistantes.
Étude de cas :
environnement de développement
Étude de cas :
Modèle objet de Media Mania Inc.
Role
+roles
0..*
+actor
Actor
1
0..*
+cast
+movie
1
Movie
com.mediamania.prototype
Adapté de [D. Jordan et C. Russel]
Étude de cas :
Déclaration de la persistance

Descripteur de persistance


Fichier XML
Contient des métadonnées sur les classes
persistantes
Étude de cas :
Déclaration de la persistance
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE jdo PUBLIC
"-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 1.0//EN"
"http://java.sun.com/dtd/jdo_1_0.dtd">
<jdo>
<package name="com.mediamania.prototype" >
<class name="Movie" >
<field name="cast" >
<collection element-type="Role"/>
</field>
</class>
<class name="Role" />
<class name="Actor" >
<field name="roles" >
<collection element-type="Role"/>
</field>
</class>
</package>
</jdo>
com/mediamania/prototype/package.jdo
Étude de cas :
Connexion à la source de donnée

Optimisation des classes à persister

Définition des propriétés de la connexion
javax.jdo.PersistenceManagerFactoryClass=com.sun.jdori.fostore.FOStorePMF
javax.jdo.option.ConnectionURL=fostore:database/fostoredb
javax.jdo.option.ConnectionUserName=dave
javax.jdo.option.ConnectionPassword=jdo4me
javax.jdo.option.Optimistic=false
Étude de cas :
Connexion à la source de donnée
Création de la source de données
try
{
InputStream propertyStream = new FileInputStream("jdo.properties");
Properties jdoproperties = new Properties( );
jdoproperties.load(propertyStream);
jdoproperties.put("com.sun.jdori.option.ConnectionCreate", "true");
PersistenceManagerFactory pmf =
JDOHelper.getPersistenceManagerFactory(jdoproperties);
PersistenceManager pm = pmf.getPersistenceManager( );
Transaction tx = pm.currentTransaction( );
tx.begin( );
tx.commit( );
}
Étude de cas:
Opérations sur les instances
Écriture d’une instance
dans la source de données
public void execute( )
{
Calendar cal = Calendar.getInstance( );
cal.clear( );
cal.set(Calendar.YEAR, 1997);
Date date = cal.getTime( );
Movie movie = new Movie("Titanic", date, 194, "PG-13", "historical, drama");
pm.makePersistent(movie);
}
Étude de cas:
Opérations sur les instances
Suppression d’instances de la source de données
public void execute( )
{
Movie movie = PrototypeQueries.getMovie(pm, movieTitle);
if (movie == null)
{
System.err.print("Impossible d’accéder au film de titre :");
System.err.println(movieTitle);
return;
}
Set cast = movie.getCast( );
Iterator iter = cast.iterator( );
while (iter.hasNext( ))
{
Role role = (Role) iter.next( );
Actor actor = role.getActor( );
actor.removeRole(role);
}
pm.deletePersistentAll(cast);
pm.deletePersistent(movie);
}
}
Implémentations (1/4)
 L’architecture de JDO simplifie le développement
d’implémentations JDO sécurisées,évolutives et
Transactionnelles.
 La spécification couvre:
1. La sémantique de la persistance en tenant compte des
transactions.
2. Les interactions des objets transactionnels J2EE.
3. La sélection des données(requête) se basant sur les
expressions java.
Implémentations (2/4)
Robin ROOS
Implémentations (3/4)
De
 Bonne pperformance pour les entreprises
• Database caching * Batched statements * Extensive use of
prepared statements * Custom fetch groups * Query caching
 Kodo JDO supporte le cycle de vie complet de la persistance
des objets.
 Kodo JDO supporte la plupart des grands serveurs d’applications J2EE.
 Kodo JDO est un outil de mapping Object/Relational.
Oracle 8i/9i
IBM
DB2
Microsoft SQL
Server
MySQL
Hypersonic
SQL
Instant
DB
PostgreSQL
Extensible database
support
Implémentations (4/4)
http://www.solarmetric.com
La concurrence :
EJB vs JDO
EJB


Ne permet pas l’héritage
Pour localiser les EJB ont
d’accéder au Home Interface
propre à chaque instance via
JNDI
JDO


Permet l’héritage
JDO ne requiert que l’accès au
PersistenceManger
Processus de compilation et déploiement est presque le même

Orienté sécurité et Transaction

Orienté persistance
La concurrence :
Microsoft Object Space vs JDO

Microsoft OS
JDO
Offre le même modèle de développement
Utilisent tous les deux XML pour le mapping

Offre un outil graphique pour
générer le fichier XML de mapping

Ne l’offre pas actuellement
Les deux offrent les options de gestion de transaction manuelle et
automatique avec un verrouillage optimiste ou pessimiste

Langage interrogation OPath

Langage interrogation JDOQL
Microsoft Object Space Vs. JDO « Suite »
Microsoft OS



Le cache de persistance n’offre pas
la possibilité d’être distribué
N’offre pas la possibilité d’évincer
les instances non utilisées
JDO


Le cache de persistance offre la
possibilité d’être distribué
Offre la possibilité d’évincer les
instances non utilisés et ceci est
effectué de façon transparente
Offre tous les deux une cache pour la gestion de la persistance
Conclusions

JDO est un standard et il est largement implémenté.
Divers implémentations (15-Commercial,
5-OpenSource).




Il est la nouvelle direction de J2EE 1.5
Architecture évolutive.
Favorise la programmation Orientée Objet




Un seul modèle (Objet et données).
Indépendant du vendeur et de la plateforme.
Favorise les optimisations majeures.
JDO 2.0 sera le Standard de persistance le plus
répandue(Craig Russel-2003).
Références



Robin ROOS, Java Data Objects, Addison
Wesley, 2003
David Jordan et Craig Russel, Java Data
Objects, Oreilly, 2003
JDO Architectures,
http://www.onjava.com/lpt/a/3912
Merci de votre attention !
Des questions ?
Téléchargement