2010-10-17 2 views
0

Учитывая, что у вас много доменных объектов, все они взаимодействуют друг с другом, было бы очень полезно знать, какие объекты были изменены в конкретной транзакции.Hibernate Информация о транзакции

Возможно ли это? Я хотел бы, по сути, сделать это:

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(?)) { 
    .... 
    } 
} 

Есть ли это?

+0

_ в этот момент многие объекты изменились, Hibernate знает, какие из них --- вы suuuuure? –

+0

Почему это полезно? Зачем тебе это нужно? В зависимости от ответа могут быть решения, но вам нужно уточнить. –

ответ

0

Предполагая, что вы хотите сделать что-то вроде создания записей аудита для всех изменений, вы можете использовать Hibernate Listener или Interceptor. Если вы подключите прослушиватель/перехватчик в нужный момент (например, onFlushDirty), у вас есть доступ к объектам и свойствам, которые были изменены.

Подробнее: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/events.html

Надеется, что это помогает.

Смежные вопросы