Есть несколько побочных эффектов, о которых вам следует опасаться.
Первое, что расширенный контекст персистентности, который вы используете для хранения этой пользовательской сущности, не должен использоваться для чего-то еще, поскольку он автоматически кэширует все, к чему прикасаются (кэш L1).
Если вам нужно использовать эту непрерывно присоединенную пользовательскую сущность в какой-то другой операции, связанной с каким-то другим контекстом постоянства, вам нужно извлечь новый экземпляр вместо использования экземпляра в области действия сеанса.
Запирание не происходит автоматически. Обычно различные контексты постоянства также могут изменять один и тот же объект. Обычно последний, кто делает какие-либо записи, «победит». Если вы хотите предотвратить это, вы можете воспользоваться обычными операциями блокировки в JPA. Для этого случая лучше всего подойдут оптимистичные блокировки.
Мне любопытно, насколько хорошо это будет работать на практике. Это, безусловно, новая идея. Прочитав много постов в блогах, статьи, книги и дискуссии со многими разработчиками, я почувствовал, что расширенный контекст персистентности - это малоизвестная вещь, и для него не было создано много лучших практик.
Тот факт, что сессионные компоненты Stateful теперь могут быть ограничены с помощью CDI (и, следовательно, автоматически уничтожаются, когда, например, сеанс HTTP уничтожается), делает всю концепцию гораздо более жизнеспособной. Но CDI также является относительно новым, и многие люди все еще должны понять, как его лучше всего использовать.