Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Аудит в JPA Java: Корпоративные приложения на Spring Boot

В работе с базами данных часто нужно выяснить одни и те же вопросы:

  • Когда была создана запись?
  • Когда запись последний раз обновлялась?
  • Кто создал запись?

Это настолько частые задачи, что их решение встроено в большинство фреймворков. В Spring Boot этот механизм называется Auditing. С его помощью мы можем автоматически записать в таблицы всю необходимую информацию.

Чтобы включить этот механизм, нужно добавить аннотацию @EnableJpaAuditing в классе main:

@SpringBootApplication
@EnableJpaAuditing
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Затем подключаем аннотацию @EntityListeners к отслеживаемым сущностям:

import java.time.LocalDate;

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
// Остальные импорты

@Entity
@Table(name = "users")
@EntityListeners(AuditingEntityListener.class)
@Setter
@Getter
class User {
    // Остальные поля

    @LastModifiedDate
    private LocalDate updatedAt;

    @CreatedDate
    private LocalDate createdAt;
}

Создание сущности приведет к заполнению createdAt, а любое изменение — к обновлению updatedAt.

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


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка приложений на языке Java
10 месяцев
с нуля
Старт 21 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»
Изображение Тото

Задавайте вопросы, если хотите обсудить теорию или упражнения. Команда поддержки Хекслета и опытные участники сообщества помогут найти ответы и решить задачу