Hibernate OGM 5.2 CR1 发布

发布者:    |       Hibernate OGM 发布

Hibernate OGM 已不再维护

今年 Hibernate OGM 的第一个版本,我很高兴宣布 Hibernate OGM 5.2 CR1

这将很快成为下一个 5.2 最终版本,我们增加了对地理空间集成和与 MongoDB、Neo4j 的新原生操作符支持,以及查询性能改进和与 Infinispan 嵌入式的集群计数器集成。

如果您需要从 5.2 之前的版本升级,您可以在 迁移说明 中找到帮助。

所有更改都已在 发布说明 中描述。

Infinispan 嵌入式序列和 ID 生成

当使用 Infinispan 嵌入式方言时,Hibernate OGM 现在将利用集群计数器进行 ID 生成和序列。如果您不熟悉这些,可以在 Infinispan 文档 中找到更多详细信息。

目前,Infinispan 只支持集群缓存中的计数器,因此,如果您使用的是本地缓存,Hibernate OGM 将无法生成 ID 或序列。Infinispan 团队正在解决此问题,我们将尽快修复。如果您想保持最新状态,请关注 OGM-1376 问题。

我们还更改了工件名称,现在在 POM 中包含的工件如下

<dependency>
    <groupId>org.hibernate.ogm</groupId>
    <artifactId>hibernate-ogm-infinispan-embedded</artifactId>
    <version>5.2.0.CR1</version>
</dependency>

Neo4j 性能

感谢 Klaas Dellschaft 的反馈,我们发现我们在从 Neo4j 加载实体时执行了低效的查询。有关更多信息,请参阅 OGM-1344 问题。

MongoDB 地理空间和原生 API

Hibernate OGM 现在支持通过使用特定的 Java 类型来声明地理空间字段,这些类型将被自动转换为存储在 MongoDB 中的 GeoJSON 对象。以下是一个示例:

@Entity
@Table(indexes = {
        @Index(columnList = "location", name = "location_spatial_idx")
})
@IndexOptions(
        @IndexOption(forIndex = "location_spatial_idx", options = "{ _type: '2dsphere' }")
)
public class Restaurant {

    // [...]

    GeoPoint location;
}

更多详情请参阅 Hibernate OGM 文档

我们还通过添加新操作:replaceOne、updateMany、updateOne、deleteMany、deleteOne、insertMany、insertOne 改进了 MongoDB 原生 CLI API。

以下是一个原生查询示例:

String nativeQuery = "db.Poem.remove({ '_id': { '$numberLong': '11' } })";
session.createNativeQuery( nativeQuery ).executeUpdate();

在哪里可以获取它?

您可以使用以下 Maven 坐标将您选择的方言包含到您的项目中:

  • Infinispan

    • 嵌入式:org.hibernate.ogm:hibernate-ogm-infinispan-embedded:5.2.0.CR1

    • 远程:org.hibernate.ogm:hibernate-ogm-infinispan-remote:5.2.0.CR1

  • MongoDBorg.hibernate.ogm:hibernate-ogm-mongodb:5.2.0.CR1

  • Neo4jorg.hibernate.ogm:hibernate-ogm-neo4j:5.2.0.CR1

或者,您可以从 Sourceforge 下载包含所有二进制文件、源代码和文档的存档。

如果您对可用版本感兴趣,可以检查官方的 Hibernate OGM 下载页面

接下来是什么?

我们将发布 5.2 最终版本,并开始工作于 5.3。Hibernate OGM 5.3 的开发将专注于 Hibernate ORM 5.2 的升级。

如何联系我?

您可以通过以下渠道找到我们:

我们期待听到您的反馈!


回到顶部