我们刚刚发布了 5.10.0.Final 版本,这是 5.10 分支的第一个稳定版本。此版本将 ORM 集成升级到 ORM 5.3 和 JPA 2.2,通过 Hibernate ORM 5.3 集成 DI 框架,升级到 WildFly 12 和 JGroups 4,以及 JPMS 自动模块名称。
新功能
如果在 5.9.0.Final 版本发布后你没有注意到,那么对于你来说有很多新功能!以下是自 5.9 版本以来的重要更改摘要。
如果你尝试了 Beta/CR 版本,那么这次发布仅添加了 5.10.0.CR1 上的两个更改。
-
HSEARCH-3159:Hibernate Search 的 ORM 集成现在依赖于 Hibernate ORM 5.3.0.Final。
-
HSEARCH-3156:
@ContainedIn
在针对仅在搜索中配置了一些子类的类时,将不再在运行时失败。
通过 Hibernate ORM 5.3 集成 DI 框架
Hibernate Search 现在利用 Hibernate ORM 对依赖注入框架的集成。如果你使用了一个与 Hibernate ORM 5.3 集成的依赖注入框架,并且你在依赖注入上下文中添加了字段桥接器,那么 Hibernate Search 将自动检索并使用此上下文中的字段桥接器。
这尤其允许你使用依赖注入框架的功能(@java.inject.Inject
、Spring 的 @Autowired
等)将你的 DI 上下文中的组件注入到你的字段桥接器中。
该集成已在 WildFly 12 这样的 CDI 2.0 环境中已知工作,Spring 团队可能会在它添加对 JPA 2.2 的支持后使其工作。
升级到 WildFly 12 和 JGroups 4
现在Hibernate Search的JBoss模块针对WildFly 12。这意味着JGroups后端现在使用JGroups 4,不再兼容JGroups 3。
此外,我们还利用这个机会将JGroups后端的JBoss模块从引擎功能包移至一个专用的功能包。
JPMS自动模块名称
我们在JAR文件中添加了自动JPMS模块名称。
请注意,Hibernate Search JAR仍然只能作为自动模块使用,因为我们的一些依赖项还不能轻松地作为模块使用。
以下是模块名称
-
org.hibernate.search.engine
-
org.hibernate.search.orm
-
org.hibernate.search.backend.elasticsearch
-
org.hibernate.search.backend.elasticsearch.aws
-
org.hibernate.search.clustering.jms
-
org.hibernate.search.clustering.jgroups
-
org.hibernate.search.jsr352.core
-
org.hibernate.search.jsr352.jberet
-
org.hibernate.search.serialization.avro
直接访问Elasticsearch客户端
Hibernate Search现在提供了一种直接访问Elasticsearch客户端的方法。有关更多信息,请参阅文档。
其他更改
以下是自Hibernate Search 5.9.0.Final以来的一些其他显著更改
-
HSEARCH-3026:如果您的Elasticsearch集群通过带有非根路径的URL访问,您现在可以使用
hibernate.search.default.elasticsearch.path_prefix
来告诉Hibernate Search有关该路径。 -
HSEARCH-3039:我们在几个版本前移除了从搜索中分析文档标识符的功能,但Hibernate Search的一些部分在特定情况下仍然对文档标识符进行分析,特别是在查询它们以及使用
@IndexedEmbedded
嵌入文档ID时。这已经被修复:现在Hibernate Search始终跳过对文档标识符的分析。 -
HSEARCH-3021:到依赖注入框架的集成现在已有适当的文档。
-
HSEARCH-3138:我们恢复了与针对Hibernate Search 5.5构建的应用程序的二进制兼容性,因此Hibernate Search 5.10可以包含在即将发布的WildFly版本中。
有关自5.9.0.Final以来的完整更改列表,请参阅我们JIRA实例上的此问题列表。
有关自5.10.0.CR1以来的完整更改列表,请参阅发布说明。
如何获取此版本
所有详细信息均可在hibernate.org上的专用页面上找到并保持最新。
下一步
我们仍在开发Hibernate Search 6,其中概念验证现在提供Elasticsearch和Lucene后端,并提供通用的API,这将避免在仅需要Elasticsearch时将Lucene添加到您的类路径中。
还有许多工作要做,但我们预计在接下来的几个月内能够发布一个Alpha版本。