我很高兴向大家宣布 Hibernate OGM 的新版本发布。
Hibernate OGM 现在可以将 JP-QL 查询转换为 Cypher 查询,用于 Neo4j。我们改进了 CouchDB 和 MongoDB 中用于关联的 JSON 表示,使其更加简洁。我们还对内部进行了多个错误修复和改进,您可以在发布说明中了解更多。
与以往一样,您可以从 SourceForge 下载发布包,或者使用 Maven、Gradle 等工具从 JBoss Nexus 仓库服务器 获取 JAR 文件。GAV 坐标为
- org.hibernate.ogm:hibernate-ogm-core:4.1.0.Beta5 用于 OGM 引擎,以及
- org.hibernate.ogm:hibernate-ogm-<datastore>:4.1.0.Beta5,具体取决于您要使用的后端。
从 JP-QL 到 Cypher
例如,如果您执行以下 JP-QL 查询
from Hypothesis h where h.author IN ('alma', 'alfred')
OGM 将在 Neo4j 上执行以下 Cypher 查询
MATCH (h:Hypothesis) WHERE ANY(_x_ IN ["alma", "alfred"] WHERE h.author = _x_) RETURN h
目前可用的 JP-QL 构造如下
- 简单比较
- IS NULL 和 IS NOT NULL
- 布尔运算符 AND、OR、NOT
- LIKE、IN 和 BETWEEN
- ORDER BY
在 MongoDB 和 CouchDB 中的关联映射更自然
在之前的版本中,具有关联的实体看起来像以下 JSON
{
"_id": "4f5b48ad",
...
"rows": [
{
"bankAccounts_id": "7873a2a7"
}
]
}
我们在“rows”字段中移除了 id 的名称,现在它将看起来像
{
"_id": "4f5b48ad",
...
"rows": [
{
"7873a2a7"
}
]
}
接下来是什么?
在Neo4j方面,还需要进行一些工作,以使实体映射更加自然。我们还想在几个地方添加缓存以提高性能(《OGM-541》:https://hibernate.atlassian.net/browse/OGM-541,《OGM-515》:https://hibernate.atlassian.net/browse/OGM-515,《OGM-522》:https://hibernate.atlassian.net/browse/OGM-522)。
我们还在讨论针对《OGM-465》的解决方案,即生成非事务数据库上失败操作的错误报告。