【问题标题】:JPA for Cassandra?卡桑德拉的 JPA?
【发布时间】:2016-01-13 10:34:27
【问题描述】:

想在一个新的基于 Java 的项目中开始使用 Cassandra,我发现了这篇文章 Beginning Cassandra -- Use Kundera? Something else?,其中指出“像 Kundera 那样假装 Cassandra 是一个关系数据库是把自己画到一个角落的好方法完全不明白你是如何到达那里的。”。

我知道数据建模应该遵循不同的规则,但假设我遵循这些规则,如果我将 Cassandra 与 JPA 层(如 Kundera、DataNucleus 或其他)包装在一起,还有什么损失吗?

【问题讨论】:

  • FWIW DataNucleus 不会“假装 Cassandra 是一个关系数据库”。也就是说,这是 JPA API,查询语言并不适合 Cassandra(正如许多其他帖子中所说的那样)。这是一个基于意见的问题,不太适合本网站。
  • WADR,我不明白这个问题是如何基于意见的。我问了一个关于隐藏本机 API 的一般性问题,并提到了 2 个示例来更好地解释这个问题。拥有这种投票工具并不意味着您必须仓促使用它。
  • 找了很多之后,决定写一个类似jpa的cassandra persistence api驱动——ohioedge。检查一下,看看这是否是您正在寻找的。​​span>

标签: java jpa cassandra nosql


【解决方案1】:

你看过阿喀琉斯吗? http://doanduyhai.github.io/Achilles/

它是目前 Cassandra 最先进的 Java 对象映射器,提供一些类似于 JPA(@Entity、@Column、...)的注解,但在开发时考虑了 Cassandra 语义(没有read-before-write、直接删除、一致性级别/ttl/时间戳支持等)并在编译时提供类型安全

视频教程在这里:https://academy.datastax.com/demos/advanced-object-mapping-java-achilles-what-why-how

【讨论】:

  • “最先进”。嗯,也许这是一种观点(因为您没有与任何其他“Java 对象映射器”进行比较,所以这是一个毫无根据的观点),这就是为什么这个网站不适合基于观点的问题。
  • 谢谢@doanduyhai。阿基里斯“战斗证明”了吗?我的意思是它有一个重度生产用户列表吗?
  • 最新版本 4.x 未经过实战验证,因为刚刚发布。旧版本,即 3.2.x 已被多家公司用于生产(价值 1Tb 的数据)
【解决方案2】:

如果阿喀琉斯对 U 来说太静态了 (生成的文件设置太多,无法用kotlin+idea设置)

https://github.com/valchkou/cassandra-driver-mapping

是一个设计精良的库,它在运行时执行实体设置/配置语句

【讨论】:

  • 感谢您的指出,但我的包含 cassandra 的项目处于深度冻结状态...
  • 此库不支持嵌入式对象映射和新的 cassandra 版本(对象数组变为空)
猜你喜欢
  • 1970-01-01
  • 2015-10-19
  • 2015-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
相关资源
最近更新 更多