Я не знаю, решает ли кэш 2-го уровня некоторые проблемы, связанные с транзакциями, или просто делает это быстрее
Основная цель кэша L2 - избегать попаданий в базу данных, и я бы не сказал, что кэш L2 решает проблемы, связанные с транзакциями; Это может быть просто вовлечено (и, таким образом, сделать весь процесс немного более сложным), если NHibernate поддерживает полностью транзакционные кеши.
Лично я склонен ограничивать использование кэширования L2 объектами только для чтения (или в основном для чтения), вот где кэш L2 дает всю свою силу. Кэширование объектов чтения-записи сложнее, особенно в кластерной среде, и поставщик кэша должен поддерживать стратегию параллелизма кэша, требуемую вашим приложением для данного объекта (только для чтения, не строго для чтения-записи , читай пиши).
Я не уверен, что это действительно отвечает на вопрос, но, по крайней мере, это может дать вам некоторые подсказки.
Ссылки