¡Esta es una revisión vieja del documento!
Hibernate + Hibernate Search
Spring Boot permite la integración de las tecnologías Hibernate y Hibernate Search de forma natural. En particular estas dos librerías complementarias se encargan de:
Hibernate: Proporciona la implementación JPA de Spring Boot, permite realizar un mapeo relacional- objetos mediante el uso de anotaciones en las entidades del modelo de dominio, soporta transacciones, bloqueos y permite configurar la generación de SQL siguiendo las reglas de la especificación JPA. También da soporte al lenguaje JPQL y al
API Criteria JPA para construcción de consultas con validación de tipos.
Hibernate Search: Esta librería permite la creación y explotación de índices Full Text usando Apache Lucene sobre las entidades del modelo de dominio, mediante el uso de anotaciones específicas es posible configurar por entidad los campos indexados, así como características avanzadas como filtros, analizadores, tokenizadores, y puentes (Bridges). El motor de Hibernate Search puede ser complementado con otras librerías mediante archivos de configuración en dos aspectos principales:
Directorios: Hibernate Search utiliza el concepto de directorio como un repositorio de índices, en este sentido es posible usar diversos tipos de almacenamiento de índices, por ejemplo, File System, Infinispan, bases de datos relacionales y bases de datos no relacionales como
MongoDB. En el proyecto en particular se están utilizando directorios Infinispan que permiten mantener los índices en memoria para aumentar el rendimiento (a costa del consumo de memoria) pero que también están respaldados por copias en disco que perminten reconstruir los índices en memoria tras una terminación de la máquina virtual Java sobre la cual se ejecuta el servidor Tomcat. Inicialmente se tenía una configuración Infinispan en cluster que permitía la sincronización automática de índices entre los nodos del cluster SIMO, usando JGroups como medio de transporte, sin embargo esta configuración fue cambiada para evitar problemas de concurrencia ocasionados por las demoras en el envío de datos entre los nodos del cluster, es decir, por los mecanismos de sincronización de Infinispan. En la actualidad se tienen directorios tipo infinispan aislados en cada uno de los nodos del cluster SIMO. la sincronización de índices entre los nodos debe hacerse manualmente. Este proceso se ilustra en la siguiente página:
Reindexamiento
Referencias
(Estas referencias apuntan a la última versión en el momento de construcción de esta Wiki, que puede diferir de la versión utilizada en el sistema)
Hibernate Search