我可以使用哪种数据库技术来持久化对象? (不需要我负责将对象映射到表并返回的东西)?

Posted

技术标签:

【中文标题】我可以使用哪种数据库技术来持久化对象? (不需要我负责将对象映射到表并返回的东西)?【英文标题】:Using which database technology could I persist objects? (Something that does NOT require me to take care of mapping objects to tables and back)? 【发布时间】:2010-11-04 01:51:32 【问题描述】:

我需要为项目使用面向对象的数据存储库。 它将介于 wiki 和 CMS 之间。

我还不是持久性领域的专家。 我想 Hibernate 和 Jackrabbit 是要使用的框架,对吧?

据我所知,Jackrabbit支持 用于映射的注释或其他便捷技术 在对象实例和数据存储之间。

另一方面,

Hibernate支持版本控制 开箱即用。

你建议我用什么? 我可以以某种方式将这两个框架结合起来吗?

如果可能的话,您能否总结一下这两个框架的优缺点?

谢谢!

编辑我真的很想使用不需要我的东西 负责将对象映射到表并返回。我为什么要? 我们生活在哪个世纪? ;)

我在 JAXB 方面有很好的经验(将对象映射到 XML 并返回到 面向对象的方式),但 JAXB 在数据库中没有用处。

【问题讨论】:

是什么让您认为 JackRabbit 不支持注释?即使是 5 分钟的教程也使用它们。 jackrabbit.apache.org/5-with-jackrabbit-ocm.html 哦,谢谢!我主要搜索有关 JCR 规范的信息,而不是 Jackrabbit 实现。 嗯,我不确定我理解你想要什么。 JCR 2 规范是jcp.org/en/jsr/detail?id=283。你想要 ORM:en.wikipedia.org/wiki/Object-relational_mapping 还是内容存储库? +1 因为我没有听说过jackrabbit,这听起来像是我可以用于我的一个应用程序的东西。 Apache 规则! @jitter:我想以 OOP 方式存储对象。有或没有映射。 【参考方案1】:

试试NeoDatis。它具有 db4o 的所有优点(本机查询、无映射、速度快),只是它完全免费(即使用于商业用途)。

更新:我上次尝试 NeoDatis(2010 年年中)时仍然存在一些严重错误。例如,断电可能会导致数据库损坏。当心!

【讨论】:

【参考方案2】:

DB4o 和 Neodatis 是要走的路……

如果您的项目是为了盈利,我认为您需要商业许可证...... 如果是这样,请使用 neodatis....

【讨论】:

【参考方案3】:

db4o 是一个面向对象的数据库。由于它是面向对象的,因此您可以直接存储对象,因此您不必维护任何到表的映射。

【讨论】:

【参考方案4】:

Oracle Berkeley DB Java Edition

是一个直接的持久层(没有映射到关系数据库)。

【讨论】:

【参考方案5】:

您也可以考虑使用JPA's。虽然它们不是自切片面包以来最热门的东西,但它们正在被 Java 社区采用,并被 Sun 社区推为新标准。不过,Hibernate 是安全且经过验证的,所以我个人会坚持使用它。

【讨论】:

我们在 OpenJPA 方面取得了相当大的成功 我个人通过 JPA API 使用 Hibernate【参考方案6】:

我会选择 Hibernate。仅仅因为它拥有如此庞大的社区。是的,我个人对 Hib 有很多(良好)经验,所以我有偏见。

至于版本控制,好吧,自己实现——不难,只需复制一份(反射是一个助手),然后保存对象。

【讨论】:

休眠需要关系数据库吗?我真的不想将对象映射到表并返回。 Ivan,你介意自己做一个基础研究吗? Не нужно ждать, что всё тебе разжуют, и положат в рот. 您可以在此处提出的 90% 的问题中使用此论据。我需要快速做出决定,bud 对 DB 技术一无所知,所以被问到了。

以上是关于我可以使用哪种数据库技术来持久化对象? (不需要我负责将对象映射到表并返回的东西)?的主要内容,如果未能解决你的问题,请参考以下文章

ef code first db first 哪种好

Redis数据持久化

什么是持久框架类型?

约会应用程序 - 我需要在 Firebase Firestore 中使用哪种数据库结构来查询除不喜欢我的用户之外的所有用户?

我可以使用哪种数据格式分发大量小文件?

我需要使用哪种技术来构建可定制的(也是跨平台的)移动应用程序?