Проблема с сериализацией В спящем режиме объекты с помощью XStream

Сначала вы можете использовать toDate() для преобразования метки времени Firebase в объект Date, а затем использовать метод объекта Date toDateString() для преобразования его в строку.

const birthDate = user.birthDate.toDate();
const birthDateString = birthDate.toDateString();

Вы также можете проверить Moment.js , он очень помогает при работе с датами и их отображении.

5
задан Satya 30 November 2008 в 13:01
поделиться

3 ответа

Я не использовал XStream прежде, но я сериализировал, в спящем режиме - управляемые объекты. Это не забава.

Существует две больших проблемы:

  • Ленивая загрузка;
  • Связи "один ко многим".

Первый очевиден - Вам нужны фактические данные для сериализации. Последний менее - любые связи "один ко многим", Вы выступаете против интерфейсов набора (например: Set<T>) будет включен собственным Hibernate (несериализуемый!) реализации набора. Это может быть то, где классы Hibernate выходят за край в Ваши объекты.

Я закончил тем, что писал отражающий код (на самом деле самосозерцательный), который сделал это:

  1. С открытой сессией, коснулся всего графа объектов к загрузке силы любые разгруженные объекты;
  2. Закрытый Быть в спящем режиме сессия (включая любые транзакции, включающие ее соединение);
  3. Обойденный граф объектов, заменяя любые списки, наборы или карты с экземплярами ArrayList, HashSet или HashMap (известный - сериализуемые наборы).

Обратите внимание, что шаг 2 важен - если Вы замените наборы до закрывания сеанса, Будете в спящем режиме, то просто поместит его собственные наборы назад на завершение...

Править: @cliff.meyers определил деталь реализации, которую я забыл упоминать: если Вы делаете это, необходимо ограничить граф объектов, идя только к собственным объектам и часам для путей циклической ссылки (например: путем кэширования ссылок на объекты Вы уже шли).

3
ответ дан 13 December 2019 в 05:44
поделиться

Существует некоторая информация об этом (и пример кода) закончена в Codehaus JIRA:

http://jira.codehaus.org/browse/XSTR-226

Мы записали некоторые инструменты для работы вокруг этого вида проблемы для набора других реализаций дистанционной работы (Ось 1, Пламя DS, и т.д.). То, что мы сделали, очень похоже на решение Dan, хотя мы добавили способность объявить, какие контуры объектов обойти и чтобы "отрезать", потому что во многих ситуациях мы не интересовались всеми данными; это также привело бы к серьезным проблемам с "n+1, выбирает" проблему, происходящую тысячи времен!:) Я думаю, реализовывая преобразователь XStream, был бы оптимальный подход, так как необходимо будет только обойти граф объектов однажды. Если Вы устанавливаете FlushMode. РУКОВОДСТВО по Вашей Сессии, необходимо также смочь изменить граф объектов, поскольку Вы обходитесь, в спящем режиме, делая что-либо противное. Используйте это с осторожностью хотя, поскольку это - несколько усовершенствованная техника.

1
ответ дан 13 December 2019 в 05:44
поделиться

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

Я придумал очень простое решение, используя отражение, которое депроксимирует улучшенные объекты CGLIB как чары.

посетите http://www.anzaan.com/2010/06/serializing-cglib-enhanced-proxy-into-json-using-xstream/ , например, и код.

1
ответ дан 13 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: