Можно ли включить «триггер» базы данных в код Java? (Hibernate + JPA + Spring + MySQL) - PullRequest
2 голосов
/ 04 октября 2011

Я использую mysql 5.5 DB, hibernate.4.0 в качестве поставщика jpa до весны 3.0.5.

У меня есть таблица user и таблица privilege в моей БД. Также у меня есть некоторые триггеры в моей БД. Эти триггеры реализуют некоторую бизнес-логику нашего приложения.

Например, пользователь john вставляет запись в таблицу table_foo через мое веб-приложение.

  1. Триггер BeforeInsertTableFoo проверит привилегии пользователя. Если у пользователя нет привилегии, триггер прервет эту операцию.
  2. Кроме того, если операция разрешена, другой триггер AfterInsertTableFoo обновит некоторые записи в таблице table_bar.

Есть ли способ, которым я могу реализовать эту логику как «триггер» в коде Java? Похоже, что Jpa Event Listener и Hibernate Event могут делать только что-то вроде триггера, но только в одной таблице.

Конечно, я могу использовать Java-класс, чтобы сделать то же самое. Но я не могу быть уверен, что все другие разработчики, даже я, будем использовать правильный класс Java для вставки или обновления БД, когда количество бизнес-правил увеличится.

Спасибо заранее. андрей

Ответы [ 2 ]

2 голосов
/ 12 июня 2012

Внимательно проверьте слушателя JPA.Вы можете сделать один слушатель для многих сущностей / таблиц.

Просто установите класс слушателя следующим образом:

public class MyListener {
@PrePersist void onPrePersist(Object entity ) {}
@PostPersist void onPostPersist(Object entity) {}
@PostLoad void onPostLoad(Object entity) {}
@PreUpdate void onPreUpdate(Object entity) {}
@PostUpdate void onPostUpdate(Object entity) {}
@PreRemove void onPreRemove(Object entity) {}
@PostRemove void onPostRemove(Object entity) {}

}

И затем, для всех сущностей, для которых вы хотите перезвонить или «вызвать» ...

@Entity @EntityListeners(MyListener.class)
   public class Customer {
    }

Надеюсь, это поможет.

-Alex

0 голосов
/ 26 сентября 2012

Я нашел несколько ссылок в Google, в которых говорится о обработчиках событий, управляемых Spring с JPA

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...