4.1.4. Использование Entity Listeners

Entity listeners позволяют выполнять бизнес-логику каждый раз, когда сущность создается, изменяется или удаляется в базе данных. Например, мы можем пересчитывать скидку для заказчика каждый раз, когда некоторый заказ для него изменяется.

Заготовку для entity listener можно легко создать в Studio:

  • Перейдите на вкладку Middleware и нажмите New > Entity listener.

  • Измените имя класса на OrderEntityListener и включите флажки для интерфейсов BeforeInsertEntityListener, BeforeUpdateEntityListener и BeforeDeleteEntityListener.

  • Выберите сущность Order в поле Entity type.

  • Нажмите OK или Apply и откройте класс listener в IDE.

См. пример в демо-приложении:

using entity listeners 1
  • OrderEntityListener.java - класс entity listener.

  • DiscountCalculator.java - бин среднего слоя, рассчитывающий скидки. Entity listener мог бы содержать бизнес-логику сам, но мы использовуем этот делегат для того, чтобы разделять логику с сервисом и JMX бином.

Если вы откроете экран Logic in Entity Listeners демо-приложения, вы увидите две таблицы: заказы и заказчики. Создайте, измените или удалите заказ, обновите таблицу заказчиков, и вы увидите, что скидка для соответствующего заказчика изменилась.