Вопрос

Если User это сущность, и мне нужно хранить User в Session, это будет отделено на следующий запрос.

AFAIK там только 2 метода для обработки этих отдельных объектов

  1. EntityMerge(session.user) - Обновите БД с объектом сеанса (небезопасный)
  2. session.userID - entityLoadByPK() снова на следующий запрос (больше нагрузки)

Это единственные 2 обходных пути? Любые другие способы?

В соответствии с Расширенные методы с ColdFusion 9 ARM Integration Slide Deck Параллельность с методом № 1 бросит ошибку, если объект был изменен на слиянии, но как это полезно? Поймайте исключение и используйте метод № 2?

Когда использовать EntityReload()? Я думал, что это работает так же, как EntityMerge(entity) Но это не так.

Спасибо!

Это было полезно?

Решение

Я склонен хранить только идентификатор пользователя, который вошел в систему на сеансе.

Тогда у меня есть метод фасада allowervice.getCurrentUSER (), который возвращает этот пользователь, если мне это нужно.

Таким образом, пользователь всегда действует и никогда не отсоединяется.

Другие советы

Как правило, я просто использую легкий прокси-объект (содержащий только верхние свойства только) в сеансе и загружаю только полное сущность по мере необходимости в том же случае, когда вы описали. Не используйте метод № 1, если вы не хотите сжечь себя (опыт разговаривает там).

Сессии в гибернации ленивы, и не сохраняются. Поэтому, хотя у вас есть объект CF в памяти, они указывают на сессию на гибернацию, которая не имеет возможности, из-за отсутствия лучшей терминологии. Чтобы вернуться в области применения, вы в основном нужно разбудить его в последующие запросы, используя что-то вроде Entitysave () или EntityLoadbyExample ()

Я согласен с тем, что упаковка в службе не только помогает избежать некоторых из этих вопросов, но в целом лучше архитектурно, чем касаясь сущности напрямую.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top