Немного предисловия, я не использовал EHCache в контексте JTA.Возможно, он делает что-то умное в пользовательской транзакции, но я в этом сомневаюсь.
Общее правило состоит в том, что элемент, возвращаемый cache.get (key), имеет значение.Изменения в нем не обязательно отражаются в базовом кэше.Причины этого становятся достаточно ясными, если вы представите, что у вас вообще нет хранилища в памяти, а есть только хранилище на диске.Хранилище дисков требует сериализации записей кэша, поэтому пара операций put / get вернет вам другой экземпляр Java.Кроме того, в такой ситуации неясно, когда любые изменения в экземпляре, возвращенном cache.get (), будут / должны быть записаны обратно на диск.Использование put () проясняет это.
В конце концов, вещь, которую вы получаете от get (), является вашей ответственностью.Вы говорите, что EHCache вступит во владение, сказав put ().