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.
См. пример в демо-приложении:
-
OrderEntityListener.java - класс entity listener.
-
DiscountCalculator.java - бин среднего слоя, рассчитывающий скидки. Entity listener мог бы содержать бизнес-логику сам, но мы используем этот делегат для того, чтобы разделять логику с сервисом и JMX бином.
Если вы откроете экран Logic in Entity Listeners демо-приложения, вы увидите две таблицы: заказы и заказчики. Создайте, измените или удалите заказ, обновите таблицу заказчиков, и вы увидите, что скидка для соответствующего заказчика изменилась.