搜索
当前位置: 天空彩票官网 > 段映射 >

面向 NoSQL 数据存储的 Hibernate 对象映射

gecimao 发表于 2019-05-15 10:12 | 查看: | 回复:

  目前的 Hibernate OGM 尚处在萌芽期,但我们计划支持其他的 NoSQL 实现。比如说,EhCache 团队打算成为 Hibernate OGM 提供者,并且正在与 Hibernate OGM 团队协作以在必要的情况下为 Hibernate OGM 提供增强与抽象。Emmanuel 提到很多人有兴趣为MongoDBCouchDBRedis提供实现。他希望对这些产品的支持能够尽快出现,此外他还希望其他项目与个人能够加入进来以支持键 / 值存储、面向文档的数据库、面向列的数据库以及面向图的数据库。

  他们的编程模型与语义完全相同。我这里所说的并不是类似于 JPA 的 API。Hibernate OGM 是个完整的 JPA 引擎。我们已经支持大多数映射及 CRUD 操作了(包括实体继承、关联等等)。如果你需要将使用Hibernate Core的 JPA 应用转换为 Hibernate OGM,你需要按照如下步骤进行:

  就这些。目前的限制因素就是 JP-QL。Alpha 2 尚不支持 JP-QL,下一版本(Alpha 3)将提供对简单 JP-QL 查询的支持。然而,如果你熟悉 Hibernate Search,那么你就可以使用全文搜索了。

  该项目最酷的地方就是我们重用了大多数的 Hibernate Core 以实现对 JPA 的 CRUD 支持,这样引擎的成熟性就可以保证了。这么做可以保证不会出现与 JPA 相关的 Bug,如果出现了 Bug,那也是来自于 Hibernate Core。

  InfoQ:何时应该使用 JPA/RDBMS,何时又该使用 JPA/NoSQL 呢?这两者孰优孰劣该如何评判呢?

  我不会不懂装懂的。坦白地说,整个业界都想搞清楚这个问题。那我就先班门弄斧了。首先,如果关系数据库能够满足项目的需求,那么就请继续使用。NoSQL 是一套非常不同的工具,他们能够解决当前关系数据库引擎所无法解决的问题。面向图的数据库对于与图相关的查询很有帮助(告诉我住在巴黎的我朋友的朋友的朋友)。比如说,在对延迟与事务要求非常严格的情况下(同时数据量不太大)就可以使用数据网格。如果数据量是个重要的因素(比如说占据大量数据的记录),那么就可以使用 BigTable。

  Emmanuel 又补充说使用 JPA 编程模型与选择使用 NoSQL 解决方案是正交的。JPA 并不适合于所有的 NoSQL 场景。使用领域模型的应用与 Hibernate OGM 搭配得会很好。JPA/NoSQL 的一个显而易见的用例就是去除关系数据库。如果 Hibernate OGM 能够让开发者尝试并探索 NoSQL 解决方案,那么它就是成功的。

  InfoQ:就眼前来看,Hibernate OGM 会支持哪些简单的查询呢?考虑到关系模型与大多数 NoSQL 数据存储存在不匹配的情况,那么你对 JPA 的支持能有多少呢?

  Emmanuel 继续说到,根据底层数据存储的不同,钝化的实体与关联可能是不同的。他认为 JPA 的关系模型能够很自然地适应于众多的 NoSQL 存储。大家有疑问的不匹配问题并不是 JPA 的问题,因为 JPA 可以实现具有关联关系的两个实体拥有独立的生命周期,它可以拥有嵌入的对象,甚至是嵌入对象的集合,这非常类似于面向文档的模型。在 Hibernate OGM 中,该模式是由领域模型托管的,可以脱离实际的对象结构以适应无模式的数据存储。

  在 Hibernate OGM 中(到目前为止),相对于不支持的特性来说,你会看到更多的性能限制(比如说在某些情况下过多的键查找)。当然,我们最初对 JPA-QL 的支持远达不到完美,人们对此需要忍耐一阵。我们的目标是让 JPA 开发者感到自然。也就是说,我们不会与底层 NoSQL 引擎的能力和强项背道而驰。

  它只用于 GemFire 而不是 NoSQL 中立的(甚至是数据网格)

  在处理 Hibernate OGM 与 Infinispan 时,我们也打算支持 JDBC。我们打算过一段时间再提供支持,但我发现了 JPA 以及更加抽象的层次(关联实体与嵌入式对象等等)。你可以将 Hibernate OGM 看作是反规范化的引擎,同时它又可以保持数据副本的一致性。这是个巨大的优势,可以优化你的数据访问模式。我们将提供一些声明的方式来对数据进行反规范化处理。这一点你是很难做到的,而在关系层次又是很自然的。

本文链接:http://ticatfans.com/duanyingshe/270.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部