2010-10-17 15 views
0

Étant donné que vous avez beaucoup d'objets de domaine, qui interagissent tous les uns avec les autres, il serait très utile de savoir quels objets ont changé dans une transaction particulière.Hibernate Informations sur les transactions

Est-ce possible? Je voudrais essentiellement faire ceci:

public void someBusinessLogicMethod(someparams) { 
    Session s = getSession(); 
    Transaction tr = s.beginTransaction() 

    domainObject = s.load(...) 
    domainObject.setSomethingOrOther(...); 
    domainObject.getSomeLink().setSomethingElse(...); 
    callSomeOtherBusinessLogicMethod(); 

    tr.commit(); 

    /* at this point many objects have changed, Hibernate knows which ones */ 

    for (Object s : tr.getAffectedObjects(?)) { 
    .... 
    } 
} 

Est-ce que cela existe?

+0

_à ce stade, de nombreux objets ont changé, Hibernate sait lesquels_ --- Êtes-vous suuuuure? –

+0

Pourquoi est-ce utile? Pourquoi avez-vous besoin de cela? Selon la réponse, il pourrait y avoir des solutions, mais vous devez clarifier. –

Répondre

0

En supposant que vous vouliez créer quelque chose comme créer des entrées d'audit pour tous les changements, vous pouvez utiliser un écouteur Hibernate ou un intercepteur. Si vous connectez l'écouteur/intercepteur au bon moment (par exemple, onFlushDirty), vous avez accès aux objets et aux propriétés qui ont changé.

Plus d'infos: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/events.html

Hope this helps.