В Java, с JPA2, какой класс я должен использовать для сохранения информации о дате? - PullRequest
3 голосов
/ 07 января 2011

Для обработки дат в Java я вижу три варианта, но, возможно, мне пока не хватает некоторых лучших альтернатив.

  1. java.util.Date - Это хорошо, но это очень простой класс со многими недостатками дизайна
  2. java.util.Calendar - что немного лучше, но все еще очень неудобно работать с
  3. JODA Time - с чем лучше работать, но я не уверен, насколько хорошо оно сохранится при использовании JPA2

Я хотел бы использовать JODA Time, потому что он обещает более простой API, но постоянство более важно, поэтому я бы хорошо справился с Календарем или Датой, если JODA Time не сохранится хорошо.

В конечном итоге мне нужно что-то, что сохраняется в базе данных как дата, желательно с простым в использовании API.

Ответы [ 3 ]

1 голос
/ 07 января 2011

Мы в спящем режиме напрямую используем LocalDate от JODA.Конечно, есть некоторая конфигурация и еще много чего.Вы можете посмотреть этот проект: Joda-Time Hibernate

0 голосов
/ 07 января 2011

java.util.Calendar нормально сохраняется как с JPA2, так и с java.util.Date, просто убедитесь, что вы добавили аннотацию @Temporal к свойству. Сохранение времени JODA лучше поддерживается в Hibernate, однако я не думаю, что он поддерживает временные оптимизации запросов, включенные в некоторые реляционные базы данных, поэтому, если вы планируете делать запросы к дате, привязанной к объектам java.util, вам будет лучше. Если вы не планируете запрашивать этот столбец, любой сериализуемый объект можно сохранить с помощью JPA.

0 голосов
/ 07 января 2011

Используйте java.util.Date для постоянного свойства POJO, затем при необходимости преобразуйте его в Joda Time в качестве средства доступа.

...