Framework Castor

Présentation
Castor XML
Castor JDO
Applications
Ressources
Bibliographie

Présentation

Castor est un framework de persistance, apparu fin 1999, orienté sur le databinding XML / SQL. Il est composé de 2 modules principaux, que sont Castor XML et Castor JDO. Le databinding est le principe qui facilite la représentation de modèle de données en un autre. Par exemple, un modèle de fichier XML, décrit par un schema XSL, peut être representé par une classe Java. Ce principe marche dans les deux sens évidemment. Ce processus de transformation, s'appel "marshalling".

Castor XML

Introduction

Castor XML, est un framework open-source de databinding XML. Contrairement au 2 APIs principal, que sont DOM (Document Object Model) et SAX (Simple API for XML), qui traite de la structure du document XML, Castor permet de gérer les données définies dans un document XML à travers une classe d'objet qui représente ces données.
Castor peut quasiment transformer n'importe quel type d'objet Java en XML, et inversement. Le processus de transformation, encore appelé marshall, fonctionne grâce aux descripteurs de classes et aux descripteurs de champs pour décrire la façon dont la transformation Java-XML et XML-Java doit avoir lieu.

Les termes marshall et unmarshall font simplement allusion à la conversion d'un flux de donnée, une séquence d'octets, depuis et vers un objets.
Marshall = conversion d'un objet vers un flux.
UnMarshall = conversion d'un flux vers un objet.

Nous verrons le fonctionnement de conversion plus en détails ci-dessous.
Un fichier de mapping XML, qui donne une description du point de vue de l’objet Java, permet de configurer le comportement de Castor XML.

Installation & Configuration

Tout d'abord nous allons voir ici, comment installer et configurer Castor JDO. Vous devez télécharger la librairie Castor.
Vous pouvez soit aller sur le site officiel de l'éditeur afin de télécharger la dernière version en date (cf. Bibliographie), ou télécharger l'archive associé dans les ressource ci dessous.

Une fois les JAR télécharger, vous devez entrer 4 de ces JAR dans votre path.

Vous devez simplement inclure ces librairies dans votre projet afin que celui-ci fonctionne.
Voila, vous venez d'installer Castor XML. Comme vous pouvez le constater l'installation est plutôt facile, et rapide. Nous allons donc maintenant vérifier que vous avez bien installer à travers les explications suivantes.

Mapping

Tout d'abord nous allons créer un fichier de mapping qui permettra de faire le lien entre nos objets Java et, les fichiers XML. Ce document est optionnel, mais si vous ne l'utiliser pas, les balises du fichier XML utiliseront le nom des attributs de la classe Java. Nous vous déconseillons cependant de ne pas en utiliser afin de pouvoir avoir une meilleure visibilité, ainsi que compatibilté, au niveau des relations entre classe. Vous pouvez voir ci-dessous un fichier de mapping.

Code : (Fichier de mapping XML-Java) [unmarshallingmapping.xml]

Voici une description plus détaillé des champs afin de vous aider à configurer au mieux vos fichiers de mapping.

<class>
name Le nom de la classe associé à la table
<map-to>
table Le nom du noeud XML contenant l'objet dans le fichier XML
<field>
name Le nom de l'attibut de la classe Java
type Le type de l'attribut de la classe (integer, string, ...)
location Noeud parent du champ
<bind-xml>
name Le nom du noeud dans le fichier XML

Marshalling

Nous allons maintenant étudier la transformation des données de l'objet au document XML. Cette opération s'appelle le marshalling. Le schéma ci-dessous montre les relations entre chaque fichier, et ou intervienne ces opération de sérialisation. Marshalling & Unmarshalling

Code : (Exemple de Marshalling)

Comme on peut le voir la transformation est assez simple à implémenter et utiliser. Cette simplicité d'utilisation est une des caractéristiques de Castor que nous verrons à travers ce document. On peut marshaller plusieurs objets dans un document XML.

Unmarshalling

L'unmarshalling, est l'opération inverse, du marshalling. Cependant, l'opération d'unmarshalling sur un document XML contenant plusieurs objets, est plus délicat. Une solution possible est de créer une classe contenant une liste de l'objet, afin de pouvoir exploiter au maximum cette possibilité. Nous n'avons pas trouver d'autres solutions mais il en existe peut-être une plus optimale.


Code : (UnMarshalling)

Castor JDO

Introduction

Castor JDO, est un framework open-source de persistance, qui supporte 2 types d'environnements, les applications clientes et les serveur J2EE. 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. Castor permet la configuration de la source de données via des connecteurs pour plusieurs SGBDR que le framework inclu.

Installation & Configuration

Installation

Tout d'abord nous allons voir ici, comment installer et configurer Castor JDO. Vous devez télécharger la librairie Castor.
Vous pouvez soit aller sur le site officiel de l'éditeur afin de télécharger la dernière version en date (cf. Bibliographie), ou télécharger l'archive associé dans les ressource ci dessous.
L'installation est simple, il suffit simplement d'inclure les .jar comme librairie dans votre projet, et insérer le chemin dans votre PATH, comme expliquer dans Castor XML.

Afin d'utiliser Castor JDO, en suivant l'installation précédente de Castor vous devez rajouter lesjar suivant :

Vous devez également inclure le driver de la base de donnée auquel vous voulez vous connecter. Dans nos exemples nous allons utiliser une base de donnée MySQL, donc vous devez télécharger un mysql-connector .
N'hésitez pas à inclure les autres jar, afin d'utiliser au mieux toutes les fonctionnalités de Castor.

Voila vous venez de mettre en place Castor pour votre projet. Comme vous pouvez le constater l'installation est plutôt simple.

Configuration

Nous allons donc maintenant configurer, et vérifier que nous avons bien installer Castor.
Vous pouvez donc aperçevoir ci-dessous un fichier de configuration à la base de donnée. Les champs en rouge sont ceux qu'il vous faut modifier afin de faire correspondre à votre base de donnée

Code : (Fichier de configuration de la base de donnée) [jdo-conf.xml]

Nous allons donc expliquer un peu plus chacun de ces champs.

Champ Description
DATABASE_NAME Le nom de l'instance de la base de donnée à utiliser dans vos fichiers Java
mysql Moteur de connexion à votre base de donnée (mysql, oracle, ...)
com.mysql.jdbc.Driver Le nom de la classe du driver
jdbc:mysql://localhost/DB_NAME Le chemin de votre base de donnée
USERNAME Le nom d'utilisateur pour se connecter à votre base de donnée
PASSWORD Le mot de passe de l'utilisateur pour se connecter à votre base de donnée
MAPPING.xml Le fichier de mapping, que nous verrons ci-dessous. Vous pouvez inclure plusieurs fichiers de mapping.

Mapping

Nous allons donc aborder maintenant le fichier de mapping de données, qui permet de faire la relation entre les données de la base de données et les objets Java.


Code : (Exemple de mapping donnée objet / donnée relationnel) [sql-mapping.xml]

Voici une description plus détaillé des champs afin de vous aider à configurer au mieux vos fichiers de mapping.

<class>
name Le nom de la classe associé à la table
identity Le nom de la clé primaire
<map-to>
table Le nom de la table associé à la classe
<field>
name Le nom de l'attibut de la classe Java
type Le type de l'attribut de la classe (integer, string, ...)
collection Le type de collection, dans le cas des tables n:m
<sql>
name Le nom du champ de la table associé au nom de l'attibut
type Le type du champ de la table associé au nom de l'attibut (integer, varchar, ...)


Il existe d'autres champ et attributs que vous pouvez consulter sur le site officiel http://castor.org, afin de compléter au mieux votre fichier de mapping

Exemple

Une fois le mapping correctement effectué, l'utilisation de Castor JDO, est aussi simple que Castor XML.
Nous allons donc à travers divers exemples illustrés la simplicité d'utilisation de Castor JDO.

Ajout, chargement, suppresion d'une entrée

Nous avons effectuer beaucoup de configuration jusqu'a présent, et nous allons maintenant finalement intéragir avec la base de données, en utilisant les fichiers de configuration établi précédemment. Nous allons donc charger ces configurations, ouvrir la base de donnée et intéragir avec celle-ci. Tout d'abord, le premier exemple ci-dessous illustre comment insérer un objet dans la base de donnée, récupérer, et supprimer une entrée.

Code : Ajout, chargement, suppresion d'une entrée [Exemple 1]

Les OQL (Object Query Language)

Les requêtes OQL, sont utilisées afin de rechercher et faire des requêtes orientée objet sur la base de données. Les requêtes OQL sont semblables aux requêtes SQL, mais utilise le nom des objets au lieu des noms SQL. Cette utilisation permet de faire totalement abstraction de la base de donnée afin de n'utiliser uniquement les objets. On peut donc voir que l'OQL permet une meilleure gestion dans la relation objet, base de donnée.
Voici un exemple de son utilisation.

Code : Les requêtes OQL [Exemple 2]

Comme vous pouvez le voir dans l'exemple ci-dessus, afin d'entrer des valeurs spécifiques vous devez les binder dans votre requête avec $.
Vous pouvez entrer autant de paramètre que vous voulez.

Applications :

Vous pouvez ici voir un bref résumé des applications que nous avons utilisé , afin d'illustrer et de comprendre au mieux Castor. Pour télécharger veuillez aller dans la section des ressources.

Castor XML - Gestion de personne

Cette petite application permet d'illustrer l'utilisation de Castor XML. Vous pouvez donc essayer le marshalling et l'unmarshalling.

Castor JDO - Gestion de librairie et de livres

Cette application, couplé avec du JSF, permet de gérer des librairies, ainsi que les livres qui la compose. Nous illustrons dans cette application en particulier, les tables de relation n:m qui constitue la seul partie "compliqué" du fichier de mapping vu précédemment.

Castor JDO - Gestion de contacts en ligne

Cette application permet de faire une gestion de contacts en ligne. Cette application est également couplé avec du JSF. Elle permet de gérer une liste d'ami parmis une liste de contact, et met en évidence un élément qui n'est pas encore implémenter dans Castor JDO, qui est la relation de table n:n sur une table.

Ressources :

- Librairie Castor 1.3
- Source d'exemple de Castor XML [Gestion de personne]
- WAR d'exemple de Castor JDO [Gestion de librairie et de livres]
- WAR d'exemple de Castor JDO [Gestion de contacts en ligne]
- Slide de présentation sur Castor / JSF
- MySQL Connector

Bibliographie


HAGUET Alexandre | PERRAUDIN Steven | VIGNIER Fabrice