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
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
On Fri, 19 Dec 2008 12:09:52 +0100 Julien Ruchaud <julien.ruchaud@codelutin.com> wrote:
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() ?
Oui :) et on peut aussi attaché à un topiaContext via la méthode personne.setTopiaContext(ctxt)
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
On Fri, 19 Dec 2008 12:25:39 +0100 tony Chemit <chemit@codelutin.com> wrote:
Est ce qu'on peut faire : Person personne = new PersonConcrete() ?
Oui :) et on peut aussi attaché à un topiaContext via la méthode personne.setTopiaContext(ctxt)
Je dirais plutot que non, on peut pas. A moins que topia est beaucoup change (ce qui est possible, mais personne ne m'a rien dit :(). il est possible de le faire programmatiquement, cela n'est pas viable. Car l'objet est mal initialisé. -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
Le Fri, 19 Dec 2008 15:50:07 +0100, Benjamin POUSSIN <poussin@codelutin.com> a écrit :
On Fri, 19 Dec 2008 12:25:39 +0100 tony Chemit <chemit@codelutin.com> wrote:
Est ce qu'on peut faire : Person personne = new PersonConcrete() ?
Oui :) et on peut aussi attaché à un topiaContext via la méthode personne.setTopiaContext(ctxt)
Je dirais plutot que non, on peut pas. A moins que topia est beaucoup change (ce qui est possible, mais personne ne m'a rien dit :(). il est possible de le faire programmatiquement, cela n'est pas viable. Car l'objet est mal initialisé.
Je crois bien que je fais des choses du genre dans sandra. Julien
-- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii _______________________________________________ Topia-devel mailing list Topia-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/topia-devel
On Fri, 19 Dec 2008 16:14:17 +0100 Julien Ruchaud <julien.ruchaud@codelutin.com> wrote:
Le Fri, 19 Dec 2008 15:50:07 +0100, Benjamin POUSSIN <poussin@codelutin.com> a écrit :
On Fri, 19 Dec 2008 12:25:39 +0100 tony Chemit <chemit@codelutin.com> wrote:
Est ce qu'on peut faire : Person personne = new PersonConcrete() ?
Oui :) et on peut aussi attaché à un topiaContext via la méthode personne.setTopiaContext(ctxt)
Je dirais plutot que non, on peut pas. A moins que topia est beaucoup change (ce qui est possible, mais personne ne m'a rien dit :(). il est possible de le faire programmatiquement, cela n'est pas viable. Car l'objet est mal initialisé.
Je crois bien que je fais des choses du genre dans sandra.
Et bien tu abuses :) Julien ;)
Julien
-- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii _______________________________________________ Topia-devel mailing list Topia-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/topia-devel
Topia-devel mailing list Topia-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/topia-devel
On Fri, 19 Dec 2008 12:09:52 +0100 Julien Ruchaud <julien.ruchaud@codelutin.com> wrote:
transaction.closeContext();
Relâche la connexion JDBC d'un sous context et de ses sous contexts avec validation de l'état des contexts.
rootContext.closeContext();
Relâche l'ensemble des ressources (cache, pools, ...) et relâche la connexion JDBC des sous contexts avec validation de l'état des contexts.
Pour moi les contexts ne sont pas du tout valider (commiter), mais plutot rollbacker. Car on fait un simple hibernateFactory.close(); donc on close la session hibernate, et je ne pense pas qu'hibernate fasse un commit lorsqu'on le close. a verifier -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
Le Fri, 19 Dec 2008 12:34:04 +0100, Benjamin POUSSIN <poussin@codelutin.com> a écrit :
On Fri, 19 Dec 2008 12:09:52 +0100 Julien Ruchaud <julien.ruchaud@codelutin.com> wrote:
transaction.closeContext();
Relâche la connexion JDBC d'un sous context et de ses sous contexts avec validation de l'état des contexts.
rootContext.closeContext();
Relâche l'ensemble des ressources (cache, pools, ...) et relâche la connexion JDBC des sous contexts avec validation de l'état des contexts.
Pour moi les contexts ne sont pas du tout valider (commiter), mais plutot rollbacker. Car on fait un simple
hibernateFactory.close();
donc on close la session hibernate, et je ne pense pas qu'hibernate fasse un commit lorsqu'on le close.
a verifier
J'avais un doute, je vais modifier. Julien
-- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii _______________________________________________ Dev mailing list Dev@list.codelutin.com http://list.codelutin.com/cgi-bin/mailman/listinfo/dev
participants (4)
-
Benjamin POUSSIN -
Julien Ruchaud -
Stephane Chorlet -
tony Chemit