Сохранение Joda DateTime вместо Даты Java в В спящем режиме

Мои объекты в настоящее время содержат свойства Date Java. Я начинаю использовать Время Joda для управления датой и вычислений вполне часто. Это означает, что я должен постоянно преобразовывать свои Даты в объекты Joda DateTime и назад снова.

Таким образом, я задавался вопросом, там какая-либо причина, я не должен только изменять свои объекты, чтобы хранить объекты Joda DateTime вместо объектов Даты Java?

Обратите внимание на то, что эти объекты сохраняются через, в спящем режиме. Я нашел jodatime-быть-в-спящем-режиме проект, но я также читал в списке рассылки Joda, из которого это не было совместимо с более новыми версиями, в спящем режиме. И кажется, что это очень хорошо не сохраняется.

Таким образом, я задаюсь вопросом, было ли лучше только продолжить преобразовывать между Датой и DateTime, или если было бы мудро начать сохранять объекты DateTime. Мое беспокойство уверено в плохо сохраняемой библиотеке.

Править: Обратите внимание, что одна из моих целей состоит в том, чтобы быть лучше способна хранить информацию часового пояса. Хранение просто Даты, кажется, сохраняет дату в локальном часовом поясе. Поскольку мое приложение может использоваться глобально, я должен знать часовой пояс также. Время Joda В спящем режиме, кажется, обращается к этому также в руководстве пользователя.

15
задан JodaStephen 22 August 2013 в 11:12
поделиться

3 ответа

Я думаю, что использование Joda DateTime в качестве типа свойства bean-компонента, вероятно, является хорошей идеей. Затем вы можете заставить Hibernate выполнить преобразование и сохранить свойство как собственный формат даты базы данных.

Я лично использовал jodatime-hibernate, и у меня не было проблем с ним (мы используем Hibernate 3.2.5GA).

Если вас беспокоит jodatime-hibernate, вы всегда можете использовать механизм пользовательского сопоставления типов Hibernate (который, я уверен, полностью выполняет jodatime-hibernate).

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

Даты не должны храниться с использованием высокого уровня абстракции, как, скажем, строка ("2009-08-07 07:43:19 ...") или как Java-объекты. Они должны сохраняться в виде миллисекунд, начиная с эпохи. Как время Joda, так и обычное время Java-даты могут дать вам время в миллисекундах с эпохи. Храните количество прошедших миллисекунд и конвертируйте их обратно в объекты при считывании с вашей БД.

Сохранение тяжеловесных объектов даты вместо длинных немного похоже на использование чисел с плавающей запятой для представления денежных сумм: обычно это огромный запах кода.

-3
ответ дан 1 December 2019 в 05:07
поделиться

Joda Time Hibernate можно использовать с недавними выпусками Hibernate - вам может потребоваться небольшая настройка графа зависимостей, вот и все (например, установка исключений). Могу я также предложить вам взглянуть на User Type, который я опубликовал на Sourceforge. Это предоставляет типы пользователей для Joda Time, которые призваны избежать проблемы смещения клиента, о которой вы упомянули. Буду признателен за любые отзывы об этом проекте. https://sourceforge.net/projects/usertype/files/

С уважением, Крис.

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

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