Spring Data предлагает репозиторий CRUD на основе JPA , который будет использовать JPA (Hibernate ORM) для выполнения операций CRUD и, таким образом, позволит Hibernate Search автоматически обновлять индексы. Вам не нужно реализовывать вызовы к entityManager.persist()
, et c. себя.
Если в вашем хранилище CRUD не используется JPA (Hibernate ORM), то, конечно, (как вы заметили) Hibernate Search не будет знать об изменениях и не будет обновлять индексы.
Вы не указали, как именно был реализован ваш репозиторий CRUD, поэтому я полагаю, вы используете реализацию Spring Data JDB C? Это единственный известный мне способ, который позволит вам обновлять базу данных в Spring Data, не полагаясь на JPA (Hibernate ORM).
Я бы порекомендовал перейти на реализацию JPA Spring Data, по крайней мере, для объекта, который требует automati c, индексация на лету.
Если это действительно не вариант, я полагаю, вы можете каким-то образом подключиться к Spring Data JDB C (переопределение методов CRUD или использование прослушивателей событий возможно), так что каждый раз, когда объект изменяется:
Я сомневаюсь, что производительность будет очень хорошей , Однако. В частности, вы упустите некоторые оптимизации в Hibernate Search, которые позволяют избежать переиндексации, когда изменение касается только свойств, которые не проиндексированы.