Java 8 DateTime API и JPA

Интеграция Java 8 DateTime API и JPA может стать достаточно нетривиальной задачей для неподготовленного разработчика. Как известно JPA вплоть до версии 2.1 (включительно) не поддерживает новый API для работы с датой и временем, который был представлен в Java 8. Это досадное ограничение можно с легкостью обойти с использованием конвертера атрибутов, не все разработчики знают об этом очень простом и крайне эффективном инструменте. Для создания своего конвертера атрибутов достаточно реализовать интерфейс AttributeConverter и переопределить два метода convertToDatabaseColumn и convertToEntityAttribute.

Рассмотрим небольшой пример:

В примере происходит конвертация из Java 8 DateTime в java.sql.Timestamp, вместо Timestamp можно использовать java.util.Date.
Аннотация @Converter(autoApply = true) автоматически применяет конвертер, где это нужно.
Пример небольшого класса, где этот конвертер может использоваться:

Более подробно с Java 8 DateTime API вы можете ознакомиться пройдя по ссылке.

Site Footer