Hibernate: слушатель событий или перехватчик, каковы плюсы / минусы на практике? - PullRequest
8 голосов
/ 09 октября 2009

Я буду реализовывать функцию обновления идентификатора в таблице после того, как Hibernate выполнит мои удаления. Но я хочу получить отзывы о том, какой подход лучше. Кроме того, в таблице, в которой я обновляю значение, Hibernate не знает об этом, поэтому мне пришлось бы сделать прямое обновление jdbc - это даже возможно.

Ответы [ 3 ]

8 голосов
/ 10 октября 2009

Что касается использования слушателя / перехватчика, я бы пошел со слушателем - он более гибок с точки зрения событий, которые можно прослушивать. Основной целью перехватчика является проверка / изменение свойств объекта до какого-либо события (например, удаление); в то время как слушатель может быть настроен на прослушивание события «PostDelete» или многих других .

Однако, если указанная таблица не отображается, зачем вам это нужно? Вместо этого вы можете обновить его непосредственно в своем коде после вызова delete () (или после вызова flush (), если используется внешний ключ).

Вы также можете сделать это в триггере (возможно; в зависимости от того, доступна ли, конечно, необходимая информация в базе данных).

2 голосов
/ 17 апреля 2015

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

Например, если вы хотите изменить сущность перед ее сохранением в базе данных, следует использовать Interceptor.

1 голос
/ 22 ноября 2010

Как я знаю, Interceptors - это старая реализация команды hibernate, а слушатели - новая гибкая версия interceptors. Имхо, проще использовать спящий слушатель в качестве перехватчика.

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