Транзакционный кэш L2 в Hibernate - PullRequest
2 голосов
/ 31 августа 2009

1: Что гарантирует «транзакционная» стратегия?

Q2: В чем разница между «транзакционной» стратегией и стратегией «чтение / запись» с JTA в качестве менеджера транзакций (определяется свойством).

Q3: Что, если я укажу стратегию «транзакции» для некоторой сущности в файле .hbm.xml, а затем буду использовать кэш L2, который не поддерживает стратегию «транзакции».

1 Ответ

2 голосов
/ 02 января 2010

Для Q1 - Транзакционный означает две вещи в моем понимании. Если у вас синхронная репликация, ваша транзакция будет приостановлена, пока все узлы не получат реплицированное изменение. если у вас есть асинхронная репликация, вы можете быть уверены, что ваши другие узлы увидят изменения в выбранном уровне изоляции (например, чтение зафиксировано) и будут соответствовать коммитам и обратным ролям. Это также означает, что если в базе данных произошла ошибка или возникла другая исключительная ситуация (вызывающая откат в случае транзакционного аспекта в вызывающей стороне), кэш также выполнит откат к изменениям - поддерживая синхронизацию между кешем и базой данных. обратите внимание, что для этого требуется менеджер транзакций JPA.

Для Q2 - чтение / запись не безопасна для кластера, она не гарантирует согласованность данных между узлами

Для Q3 - Никогда не пытался, но, вероятно, произойдет сбой с хорошим исключением

...