Ik heb de volgende code:
De bedoeling is uiteraard dat een bepaalde entity opgeslagen wordt. Dit werkt naar behoren. Maar, ik snap even niet waar mijn session nu geflushed wordt? Ik gebruik een OpenSessionInViewFilter, die standaard de sessie niet flusht. Kennelijk is er iets anders wat de sessie flusht. Dat kan op meerdere manieren, en de meest logische in dit geval is dat de template.execute aanroep een transaction.commit() aanroept, die op zijn beurt weer een session.flush aanroept. Ik kan echter nergens in de documentatie terugvinden dat dat het geval is. Weet iemand dit toevallig? Doet template.execute een commit op de transactie?
[edit] transManager is uiteraard een HibernateTransactionManager
Java:
1
2
3
4
5
6
7
8
9
10
11
| public void saveOrUpdate(final Entity entity) throws DataAccessException { TransactionTemplate template = new TransactionTemplate(transManager); template.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); template.execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus transactionStatus) { getHibernateTemplate().saveOrUpdate(entity); return null; } }); } |
De bedoeling is uiteraard dat een bepaalde entity opgeslagen wordt. Dit werkt naar behoren. Maar, ik snap even niet waar mijn session nu geflushed wordt? Ik gebruik een OpenSessionInViewFilter, die standaard de sessie niet flusht. Kennelijk is er iets anders wat de sessie flusht. Dat kan op meerdere manieren, en de meest logische in dit geval is dat de template.execute aanroep een transaction.commit() aanroept, die op zijn beurt weer een session.flush aanroept. Ik kan echter nergens in de documentatie terugvinden dat dat het geval is. Weet iemand dit toevallig? Doet template.execute een commit op de transactie?
[edit] transManager is uiteraard een HibernateTransactionManager
[ Voor 3% gewijzigd door zneek op 20-07-2006 17:07 ]