У меня есть многоуровневое веб-приложение, работающее на основе spring-jpa-hibernate, и я сейчас пытаюсь интегрироватьasticsearch (поисковик).
Что я хочу сделать, так это перехватить все события postInsert / postUpdate и отправить эти сущности вasticsearch, чтобы он переиндексировал их.
Проблема, с которой я сталкиваюсь, заключается в том, что мой проект "dal-entity" будет иметь зависимость во время выполнения от "search-indexer", а "search-indexer" будет зависеть от компиляции "dal-entity"«так как он должен делать разные вещи для разных лиц.
Я думал о том, чтобы иметь «поисковый индексатор» как часть DAL (поскольку можно утверждать, что он выполняет операции с данными), но даже при этом он должен быть частью раздела DAO.
Я думаю, что мой вопрос можно перефразировать следующим образом: как я могу иметь логику в приемнике событий гибернации, который не может быть инкапсулирован исключительно в проекте сущностей (поскольку это не входит в его обязанности).
Обновление
Причина, по которой проект dal-entity зависит от индексатора, заключается в том, что мне нужно настроить прослушиватель в файле конфигурации Spring, который отвечает за контекст jpa (который явно находится в dal-entity).
Зависимость - это не область времени компиляции, а область времени выполнения (поскольку во время выполнения этому прослушивателю понадобится контекст hibernate).