Exemple : la classe Person

public class Person {

/**
* L’attribut nom de Person
*/
private String name = null;
/**
* La date de naissance de Person
*/
private Date dob = null;
(…)

/**
* Les constructeurs
*/
public Person() { … }
public Person(String name) { … }

/**
* Les accesseurs en lecture et écriture des attributs de la classe Person
*/
public Date getDateOfBirth() { …}
public String getName() {…}
public void setDateOfBirth(Date dob) {…}
public void setName(String name) {…}
}

Java -> XML :

// Création d’une instance de la classe Person
Person person = new Person("James Bond");
person.setDateOfBirth(new Date(1955, 8, 15));

// Création du fichier de destination de la conversion
writer = new FileWriter("test.xml");

// Conversion de l’instance dans le fichier destination
Marshaller.marshal(person, writer);

Document XML produit et avec org.exolab.castor.indent=true dans le fichier castor.properties

XML -> Java :

// Création d’un flux de lecture sur le document XML
reader = new FileReader("test.xml");

// Conversion des données du document XML en objet Java
Person person = (Person)Unmarshaller.unmarshal(Person.class, reader);

Utilisation d’un fichier de mapping, Java -> XML

// Chargement du mapping
Mapping mapping = new Mapping();
mapping.loadMapping("mapping.xml");

// Création du fichier de destination de la conversion
writer = new FileWriter("test.xml");

// Conversion de l’instance dans le fichier destination
Marshaller marshaller = new Marshaller(writer);
marshaller.setMapping(mapping);
Marshaller.marshal(person);

Utilisation d’un fichier de mapping, XML -> Java

// Création d’un flux de lecture sur le document XML
reader = new FileReader("test.xml");

// Conversion du document XML en objet Java
Unmarshaller unmarshaller = new Unmarshaller(Person.class);
unmarshaller.setMapping(mapping);

// Récupération de l’objet Person
Person person = (Person)unmarshaller.unmarshal(reader);

Exemple de fichier mapping XMLet le Document XML produit avec l'utilisation de ce fichier

Castor JDO : Applications clients

Pour les applications clients :

// Chargement d’une configuration
JDO.loadConfiguration( "database.xml" );

// ou définition d’un objet JDO avec sa propre configuration
JDO jdo = new JDO();
jdo.setDatabaseName( "mydb" );
jdo.setConfiguration( "database.xml" );
jdo.setClassLoader( getClass().getClassLoader() );

// récupération de l’objet database
Database db = jdo.getDatabase();

// Début des transactions
db.begin();

// transactions
. . .

// Application des transactions
db.commit();

// Fermeture
db.close();

Castor JDO : Serveurs J2EE

InitialContext ctx;
UserTransaction ut;
Database db;

// Récupération de la base de données dans JNDI
ctx = new InitialContext();
db = (Database) ctx.lookup( "java:comp/env/jdo/mydb" );

// Début de la transaction
ut = (UserTransaction) ctx.lookup( "java:comp/UserTransaction" );
ut.begin();

// Transactions
. . .

// fin des transactions, fermer la base de données
ut.commit();
db.close();

Exemple de mapping relationnel
// pour une table de la base de données
create table person
(
id int not null,
name varchar(50) not null,
);

Fichier de mapping