Java for Beginner
675 subscribers
558 photos
156 videos
12 files
851 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Продвинутые аннотации и нюансы работы с датами

4. @CreatedDate и @LastModifiedDate

Эти аннотации используются в Spring Data JPA для автоматического управления полями, хранящими дату создания и дату последнего изменения.

Пример использования:
@Entity
public class Event {
@CreatedDate
private LocalDateTime createdAt;

@LastModifiedDate
private LocalDateTime updatedAt;

// Геттеры и сеттеры
}


Поля createdAt и updatedAt автоматически заполняются при создании и обновлении сущности.

Как это работает под капотом:
Spring Data JPA использует AuditingEntityListener для отслеживания изменений сущностей и автоматического заполнения этих полей.

Плюсы:
Упрощает управление временными метками.
Не требует ручного обновления полей.


Минусы:
Требует настройки аудита в конфигурации Spring.

5. @Scheduled

Эта аннотация используется для запуска задач по расписанию. Она поддерживает работу с датами и временем для выполнения задач в определенные моменты.

Пример использования:
@Component
public class EventScheduler {
@Scheduled(cron = "0 0 12 * * ?") // Запуск каждый день в 12:00
public void scheduleEvent() {
System.out.println("Event scheduled at: " + LocalDateTime.now());
}
}


Как это работает под капотом:
Spring использует TaskScheduler для выполнения методов, помеченных этой аннотацией, в соответствии с указанным расписанием.

Плюсы:
Удобно для выполнения периодических задач.
Поддерживает сложные расписания через cron.


Минусы:
Требует настройки пула потоков для выполнения задач.

6. Нюансы работы с датами

Временные зоны: Всегда учитывайте временные зоны при работе с датами. Используйте
@JsonFormat(timezone = "UTC") или ZonedDateTime.
Иммутабельность: Классы дат в Java (например, LocalDate, LocalDateTime) являются неизменяемыми. Это означает, что любые операции возвращают новый объект.
Сериализация: При работе с REST API убедитесь, что даты сериализуются и десериализуются в правильном формате.


#Java #Training #Spring #Date #CreatedDate #LastModifiedDate #Scheduled