Retour | Home | Contact |
---|
Fournir une solution de persistance pour les objets Java.
Contrairement à ce que semble indiquer son nom, Castor-JDO est un framework de persistance qui ne respecte pas la norme JDO. Il utilise la réflexivité de Java pour accéder (en lecture ou écriture) à l'état des objets métiers persistants. Ceux-ci doivent donc fournir des accesseurs de type JavaBeans standard permettant à Castor-JDO d'accéder à leur état.
Castor permet de configurer :
L'API de Castor est relativement simple (1 classe, 7 interfaces) dans le package
org.exolab.castor
.
Les classes métier doivent implémenter des accesseurs
de type JavaBeans standard (getXxx()
/setXxx()
)
permettant à Castor-JDO d'accéder à leur état.
La récupération d'objet persistant peut se faire par Database::load
(telleClasse, clé)
ou via une requête Castor OQL.
La configuration se fait via 2 fichiers XML pour :
class
contenant :
map-to
qui
l’associe à une table de la base de
données relationnellefield
qui
définissent les mappings table/champ-classe/attribut.Un exemple de code Castor-JDO est :
Database myDatabase = jdo.getDatabase();
myDatabase.begin();
Adresse adresse = new Adresse();
adresse.setLibelle (“34 avenue des fleurs en pot 06000 NICE“);
adresse.setDepartement (Departement);
myDatabase.load (Departement.class, 6);
myDatabase.create (adresse);
myDatabase.commit();
myDatabase.close();
Un exemple de requête Castor OQL est :
Query myQuery =
myDatabase
.getOQLQuery ("SELECT a FROM Adresse WHERE a.id = $1");
myQuery.bind (new Long (idAdresse));
QueryResults myQueryResults = myQuery.execute();
Adresse adresse = (Adresse) myQueryResults.next();
Un exemple de descripteur Castor-JDO est :
<class access="shared" name="Adresse" identity="id" key-generator="IDENTITY">
<description>Adresse</description>
<map-to table="ADRESSE" xml="adresse"/>
<field name="id" type="long" dirty="ignore" required="true">
<sql name="ID_ADRESSE" type="numeric"/>
<xml node="attribute"/>
</field>
<field name="adresse" type="java.lang.String" dirty="ignore" required="true" >
<sql name="ADRESSE" type="char"/>
<xml node="element"/>
</field>
<!-- References – Clés étrangères -->
<field name="departement" type="Departement" dirty="ignore" required="false">
<sql name="ID_DEPARTEMENT_ADRESSE"/>
<xml node="attribute" reference="true"/>
</field>
<!-- many-references -->
<field name="dsvsAdresse" type="Personne" collection="vector">
<sql many-key="ID_ADRESSE_PERSONNE"/>
<xml node="element"/>
</field>
</class>
Persistance | Solution | Castor-JDO |
---|---|---|
Version | 0.9 | |
Transactions | Explicites | JTA |
Implicites | Non | |
Pessimistes | Exclusive | |
Optimistes | Shared | |
Distribuées | JTS | |
Mémoire | ||
Cycle de vie | Callbacks | |
Requêtes | Langage objet | Castor OQL |
Projections, vues | ||
Fonctions aggrégats | ||
SQL possible | Database:: getOQLQuery ("CALL SQL ...") |
|
Accès au code | Non | |
Performance | Cache | Oui |
Détection des modifications | ||
Transparence | Accès aux informations | Réflexivité Java |
Relations (1-n, n-m) | Oui | |
Héritage | Oui | |
Collections Java | ||
Persistance de proche en proche | ||
Non intrusion dans le code des objets métier | Méthodes d'accès aux données obligatoires | |
Accès au graphe d'objets dépendants | ||
Accès au modèle métier | Oui | |
Mapping | Multi-tables | Oui |
Top-down | ||
Bottom-up | ||
Granularité fine | ||
Stockage | Paradigme libre | SGBDR, XML, LDAP |
Support d'une base existante | Oui | |
Portabilité | API standard | org.exolab.castor |
J2ME | ||
J2SE | Oui | |
J2EE | ||
Implémentations | ||
Licence | Style BSD |
Retour | Home | Contact |
---|