Nouvelle version en pièce jointe. Julien Le Thu, 18 Dec 2008 17:26:31 +0100, Stephane Chorlet <schorlet@codelutin.com> a écrit :
Julien Ruchaud a écrit :
Je suis en train de faire un peu de doc pour Topia. Je voulais votre avis dessous. Est-ce qu'il manque quelques choses ? Faut-il plus détailler ?
How to ======
Ce document a pour objectif de prendre en main le framework Topia. Le document est constitué de 4 parties, la modèlisation, la génération, la configuration et l'utilisation.
Modélisation ------------
La première étape constiste à réaliser le modèle UML soit avec Argouml soit avec Poséidon.
Capture d'écran
Le stérotype «entity» sur les classes permet de préciser que la classe est persister par Topia. D'autre stérotypes (extern, service, ...) sont disponiples mais ne sont pas présenté.
Le fichier de modélisation peut être compléter par un fichier de configuration nommé <nom fichier modélisation>.properties. Il contient des informations techniques propres au librairie utilisé par topia.
Exemple de fichier de configuration + explications + convention de nommage
Génération ----------
La génération des fichiers Topia se font par l'utilisation d'un plugin maven. Le plugin est disponnible sur le repository maven de code lutin à l'adresse suivante >>> www.
Exemple de configuration du plugin maven + explication
Généralement pour une classe modélisé, nous retrouvons 6 fichiers : * Une interface >>> Exemple * Une classe abstraite >>> Exemple * Une implantation >>> Exemple * Une configuration hibernate >>> Exemple * DAO abstrait >>> Exemple * DAO >>> Exemple
Une classe Helper est aussi générée, permettant l'accès à l'ensemble des DAO.
Configuration -------------
Un fichier contenant les informations de connexion à la base de données et de configuration de Topia doit être créé au niveau des ressources du projet.
Exemple de fichier de configuration + explications
Utilisation -----------
Implantation des méthodes ~~~~~~~~~~~~~~~~~~~~~~~~~
Si des méthodes ont été définis dans le modèle de données il faut créer l'implantation correspondante. Le paquetage doit porter le même nom que celui de la génération.
Gestion des transactions ~~~~~~~~~~~~~~~~~~~~~~~~
Properties conf = Resource.getConfigProperties("/TopiaContext.properties");
Permet de charger un fichier contenant les informations de connexion à la base et de configuration de Topia.
TopiaContext rootContext = TopiaContextFactory.getContext(conf);
Récupère le context de départ pour la création de sous context pour la gestion des entités.
TopiaContext transaction = rootContext.beginTransaction();
Création d'un sous context pour la gestion des entités.
transaction.commitTransaction();
Validation de l'état du context, les modifications des entités sont reportées dans la base de données.
transaction.rollBackTransaction();
Invalidation de l'état du context, les modifications des entités ne sont pas reportées dans la base de données.
transaction.closeContext();
Fermeture d'un sous context et de ses sous contexts.
s'il y a une transaction en cours et qu'on ferme le contexte: transaction = context.beginTransaction(); ... transaction.closeContext();
est ce que le closeContext() fait un commit ou un rollback ?
rootContext.commitTransaction();
Fermeture du context principal et de ses sous contexts.
C'est quoi la différence entre : transaction.commitTransaction(); et context.commitTransaction();
Manipulation des entités ~~~~~~~~~~~~~~~~~~~~~~~~
PersonDAO personDAO = <nom modele>Helper.getPersonDAO(transaction);
Récupération d'un DAO pour accéder à une entité.
Person person = personDAO.findByTopiaId(id);
Les méthodes find permettent de récupérer une ou plusieurs selon différents critères.
person.setName("tutu");
Manipulation de l'entité par les getters et setters.
Person person = personDAO.create();
Est ce qu'on peut faire : Person personne = new PersonConcrete() ?
Création d'une entité.
personDAO.update(person);
Modification d'un entité.
Est ce qu'on peut faire :
transaction = context.beginTransaction();
Person person = personDAO.create(); person.set...(...); personDAO.update(person); person.set...(...); personDAO.update(person);
transaction.commitTransaction();
personDAO.delete(person);
Suppression d'une entité. _______________________________________________ Dev mailing list Dev@list.codelutin.com http://list.codelutin.com/cgi-bin/mailman/listinfo/dev
_______________________________________________ Dev mailing list Dev@list.codelutin.com http://list.codelutin.com/cgi-bin/mailman/listinfo/dev