|
|
|
Зачем откат транзакции в Hibernate, если он реально не может откатить изменения в БД?
|
|||
|---|---|---|---|
|
#18+
При использовании Код: plaintext 1. 2. 3. Hibernate игнорирует FlushMode.COMMIT и при вызове Session.save() делает flush(), в результате чего запись ложится в БД. Пусть в одной транзакции создается оъект Test и далее возбуждается исключение (by zero). При откате транзакции по логике объект Test не должен остаться в базе, но он уже там и теперь его только удалять, запомнив идентификатор и вручную? Ниже простой код и маппинг. Поделитесь соображениями плз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 10:50 |
|
||
|
Зачем откат транзакции в Hibernate, если он реально не может откатить изменения в БД?
|
|||
|---|---|---|---|
|
#18+
Поэкспериментировал. Сначала действительно долго удивлялся, а потом понял. Проверьте поддерживает ли Ваша база данных (или ее jdbc драйвер) транзакции. Hibernate реально вызывает rollback у jdbc connection. А вот работает ли этот самый роллбэк для конкретной базы - это вопрос. Я экспериментрирую на MySql. У меня в начале экспериментов была база данных MyIsam. И ей пофигу транзакции, она их не поддерживает. И ситуация была удивительная, роллбэк не давал эффекта. А вот когда я переделал ее на INNODB (поддерживает транзакции) все встало на свои места! И роллбэк стал работать как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 15:05 |
|
||
|
Зачем откат транзакции в Hibernate, если он реально не может откатить изменения в БД?
|
|||
|---|---|---|---|
|
#18+
во всем J2EE помоему таким образом реализованны транзакции ... хотя опять же по моему J2EE версии 3 как раз на хибернейте и реализован. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 18:28 |
|
||
|
Зачем откат транзакции в Hibernate, если он реально не может откатить изменения в БД?
|
|||
|---|---|---|---|
|
#18+
мимо шел... хотя опять же по моему J2EE версии 3 как раз на хибернейте и реализован. Почти. На хибернейте основана реализация CMP Persistence в JBoss. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2006, 23:00 |
|
||
|
Зачем откат транзакции в Hibernate, если он реально не может откатить изменения в БД?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Мне почему-то казалось, что откат делает сам Hibernate. Проверил с InnoDB, действительно заработало. Видимо, нужно было внимательнее читать документацию по hibernate. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2006, 08:45 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33988505&tid=2148123]: |
0ms |
get settings: |
12ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 457ms |

| 0 / 0 |
