Hibernate Search 中文操作指南

6. Hibernate ORM integration

6.1. Basics

Hibernate ORM "mapper"是 Hibernate Search 与 Hibernate ORM 的集成。

它的主要功能包括:

  1. Listener-triggered indexingHibernate ORM 实体,因为它们在 Hibernate ORM EntityManager/_Session_中被修改。

  2. 以命中的形式 Loading of managed entities搜索结果。

6.2. Startup

Hibernate Search 与 Hibernate ORM 的集成会自动启动,与 Hibernate ORM 同时启动,只要它存在于类路径中即可。

如果由于某种原因需要阻止 Hibernate Search 启动,则将 boolean propertyhibernate.search.enabled_设置为_false

6.3. Shutdown

Hibernate Search 与 Hibernate ORM 的集成会自动停止,与 Hibernate ORM 同时停止。

在关闭时,Hibernate Search 会停止接受新的索引请求:新的索引尝试会引发异常。Hibernate ORM 关闭会一直阻塞到所有正在进行的索引操作完成。

6.4. Mapping Map-based models

"Dynamic-map" entity models,即基于_java.util.Map_而不是自定义类的模型,不能使用注释进行映射。但是,可以使用 programmatic mapping API进行映射。您只需要使用_context.programmaticMapping().type("thename")_按名称引用类型:

  1. 传递实体名称以获取动态实体类型。

  2. 传递动态嵌入式/组件类型的“角色”,即所有者实体的名称,后跟一个点 (“.”),后跟点分隔的路径,以获取该实体中的组件。例如 MyEntity.myEmbedded_或 _MyEntity.myEmbedded.myNestedEmbedded

6.5. Multi-tenancy with non-string tenant identifiers

虽然在 Hibernate ORM 中处理字符串租户标识符时内置了 Hibernate Search 中的支持,但是要使用非字符串租户标识符就需要配置自定义租户标识符转换器。这可以通过将 TenantIdentifierConverter 类型的 Bean 引用传递给 hibernate.search.multi_tenancy.tenant_identifier_converter 配置属性来实现。

6.6. Other configuration

本指南的其他部分提到了其他配置属性。您可以在 the ORM integration configuration properties appendix中找到可用属性的完整参考。