Ok j'ai donc rajouté ca dans le FAQ.rst de Topia-persistence :
Comment commit (ou rollback) une transaction directement à partir d'un DAO ?
==============================
==============================================
Contrairement à ce que l'on pourrait croire aux premiers abords, les méthodes commitTransaction()
et rollbackTransaction() disponibles dans les DAO ne sont pas prévus à cet effet. Il faut toujours
utiliser le contexte pour commit (ou rollback) une transaction. Donc pour le faire à partir d'un DAO :
dao.getContext().commitTransaction() // on récupère le context (transaction sur le DAO) et on commit.
Le principe reste identique pour le rollback.
Pour revenir sur les méthodes commitTransaction() et rollbackTransaction() disponibles sur le DAO, elles
servent de "callback" au moment du commit (ou rollback) de la transaction. Le context se chargera d'appeler
tous les commitTransaction() des DAO, ceci afin de permettre un traitement spécifique au DAO au moment du commit.
Ce traitement peut donc être effectué directement à partir du dao via cette méthode sans passer par le context.
JAVADOC dans TopiaDAODelegator dont herite tous les DAO générés :
/**
* Callback method when context was commited.
* The DAO call his father to commitTransaction().
* The father of a DAO can be a TopiaDAOHibernate or TopiaDAOFlatfile.
* This method was especially interesting for TopiaDAOFlatfile.
* This method does nothing when father is a TopiaDAOHibernate.
* @throws org.nuiton.topia.TopiaException
* @see org.nuiton.persistence.TopiaDAOAbstract
* @see org.nuiton.persistence.hibernate.TopiaDAOHibernate
* @see org.nuiton.persistence.flatfile.TopiaDAOFlatfile
*/
@Override
public void commitTransaction() throws TopiaException {
getParentDAO().commitTransaction();
}
/**
* Callback method when context was rollback.
* The DAO call his father to rollbackTransaction().
* The father of a DAO can be a TopiaDAOHibernate or TopiaDAOFlatfile.
* This method was especially interesting for TopiaDAOFlatfile.
* This method does nothing when father is a TopiaDAOHibernate.
* @throws org.nuiton.topia.TopiaException
* @see org.nuiton.persistence.TopiaDAOAbstract
* @see org.nuiton.persistence.hibernate.TopiaDAOHibernate
* @see org.nuiton.persistence.flatfile.TopiaDAOFlatfile
*/
@Override
public void rollbackTransaction() throws TopiaException {
getParentDAO().rollbackTransaction();
}
Est-ce que cela résout le problème ? Au passage ca permet de montrer que j'ai bien compris mon erreur :p
Le 28 mai 2009 11:51, Benjamin POUSSIN
<poussin@codelutin.com> a écrit :
On Thu, 28 May 2009 10:36:01 +0200
> Excuse moi, mais le nom de la méthode peut porter a confusion ceci-dit ! Et
> c'est FloriAN et pas FloriENT !! enfin c pas grave, chuis un ptit stagiaire
> qui fait des bêtises et qui apprend après tout :p
et qui profite de toutes les questions posees, pour modifier la
javadoc, maintenir une FAQ et la doc ToPIA a jour ;)
fallait pas commencer :D