Herramientas de usuario

Herramientas del sitio


simo:documentos:tecnicos:hibernate

¡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
  • Backends: Para Hibernate Search, los backends son los agentes encargados de realizar los procesos de indexación y búsqueda. Existen diversos tipos de backends, entre los cuales están
    • Lucene: Utiliza el motor Lucene directamente
    • JMS: Utilizado en clusters para controlar concurrencia mediante el uso de una cola de mensajes en el servidor maestro el cual se encarga del indexamiento
    • JGroups: Utilizado en clusters para controlar concurrencia mediante el uso de un grupo JGroups que envía mensajes al servidor maestro el cual se encarga del indexamiento
    • Elastic Search: Conecta con una instancia de Elastic Search, un servicio de indexamiento desacoplado

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 ORM

Hibernate Search

Infinispan

simo/documentos/tecnicos/hibernate.1508288038.txt.gz · Última modificación: 2017/10/18 00:53 por lgomez