在不使用关系数据库的情况下,使用Java存储和检索对象的简便方法?

10 java persistence relational

您是否知道在Java中存储和检索对象的"简单"方法,而不使用像Hibernate这样的关系DB/ORM

[ 注意,我没有考虑为此目的进行序列化,因为它不允许在对象图的中间检索任意对象.我也不考虑DB4O,因为它有限制性许可.谢谢.]

"简单"的含义:不必处理诸如键/值对之类的低级细节来重建对象图(与BerkeleyDB或传统缓存一样).这同样适用于从面向文档或列的DB(CouchDB,HBase,......,甚至Lucene)重建对象.

也许有一些有趣的项目提供了我所不知道的所提到的存储系统和对象模型(如ORM将用于RDBMS)之间的一层集成.

是否有人成功地在生产中使用这些,或者尝试除关系数据库之外的持久性策略?RDF商店怎么样?

更新:我遇到了一篇非常有趣的文章:分布式键值存储列表

Mat*_*ell 5

  • 对象序列化(也称为将文件存储到文件中)
  • Hibernate(使用关系数据库但对开发人员来说相当透明)

我建议使用Hibernate,因为它会处理大多数丑陋的细节,这些细节会让开发人员在使用数据库时陷入困境,同时仍然允许多年来对数据库软件进行的优化.


小智 0

我想我已经找到了我的问题的某种答案。

当您始终根据关系、规范化和连接来思考数据时,获得面向文档的范式思维方式并不是一件容易的事。

CouchDB似乎符合要求。它仍然可以充当键值存储,但其强大的查询功能(map/reduce、视图排序规则)、并发就绪性和与语言无关的 HTTP 访问使其成为我的选择。

唯一的问题是必须正确定义 JSON 结构并将其映射到对象,但我相信我会想出一个简单的解决方案,用于 Java 和 Scala 的关系模型(稍后会担心缓存,因为争用已从数据库)。Terracotta 仍然有用,但肯定不如 RDBMS 场景。

谢谢大家的意见。