Может показаться сумасшедшим, но то, что вы просите, очень дорого для кеша:)
Я изначально начал с такого дизайна 10 лет назад, когда Infinispan мог выступать в качестве ресурса XA с Hibernate. Это было медлительно.
Очевидно, что это было не правильное решение, поэтому мы перешли к интеграции с Hibernate с помощью синхронизации, что стало большим улучшением. На этом этапе Infinispan все еще был транзакционным и вел себя так, как вы видите.
Транзакционный Infinispan был в конечном итоге удален, опять же по соображениям производительности, когда мы выяснили, как обращаться с кластерными ситуациями без транзакций.
Ключевым моментом для Hibernate 2LC является то, что он должен помочь ускорить ваши приложения. Конечно, согласованность важна, поэтому мы гарантируем, что любые откаты будут отражены в Infinispan, но да, половина данных транзакции уже может быть в кеше.
Если согласованность данных в полете как-то является проблемой,Я бы порекомендовал использовать оптимистическую блокировку, которую провайдер кэша Infinispan может использовать для сравнения версий данных. Таким образом, он может видеть, пытается ли старая версия данных обновить более новую, но мы не видели таких случаев, так как многие такие ситуации запрещены самой Hibernate.
Как всегда, если у вас есть определенныйСитуация, которая вызывает проблемы, дайте нам знать.
ps Мы создали несколько простых учебных пособий по Hibernate Infinispan для различных сред (local, spring, wildfly) здесь , поэтому я предлагаю вам взглянуть нате. У них есть не только примеры кода, но и настройки конфигурации, которые прекрасно работают:).
ps2. Эти примеры не устанавливают FULL_XA в кеш;)