数据访问层中标准 ORM 的替代方案是啥? [关闭]

Posted

技术标签:

【中文标题】数据访问层中标准 ORM 的替代方案是啥? [关闭]【英文标题】:What are alternatives to standard ORM in a data access layer? [closed]数据访问层中标准 ORM 的替代方案是什么? [关闭] 【发布时间】:2011-02-23 00:54:42 【问题描述】:

我们都熟悉关系数据库的基本 ORM:一个对象对应一行,该对象中的一个属性对应一列,尽管许多 ORM 添加了很多花里胡哨。

我想知道还有哪些其他选择(除了对数据的原始访问)。仅与关系数据库一起工作的替代方案会很棒,但是那些可以以统一的方式与除了 SQL(例如平面文件、RSS、NoSQL 等)之外的多种类型的后端一起工作的替代方案会更好。我对想法而不是特定的植入以及它们使用的语言/平台更感兴趣,但请链接到您认为有趣的任何内容。

【问题讨论】:

我并不是要粗鲁,但我在我的问题中特别提到了这一点。任何平台都可以,我更感兴趣的是概念而不是实现。 @Lukas Eder 为什么将其关闭为“基于意见”?作者似乎正在寻找 ORM 的替代品——这可能会给您带来关于 ORM 的意见,但问题仍然有效,并且有替代品。您在该问题的哪个位置推断出意见? @swampsjohn,好老问题。我一直在从事一个开源项目,该项目提供了专注于高延迟连接(云 SQL/NoSQL)的良好 ORM 替代方案。我很想听听你的想法:git.io/ad @LukasEder 这不应该被关闭为“基于意见的”,其中没有任何内容需要征求意见。它简单地问“有哪些选择......”而不是“哪些是好/坏/为什么?” 最后一句话“我更感兴趣的是想法而不是具体的植入以及它们使用的语言/平台,但请链接到任何你认为有趣的东西。”应该删除/编辑以保持问题的客观性并有一个具体的答案。 【参考方案1】:

您的基本选择是:

只需使用原始 SQL。 选择满足您需求的 ORM。大多数平台都有多种选择。 - 例如 .NET 平台支持 LINQ、nHibernate、Entity Framework 等。 编写您自己的 ORM 和/或数据访问框架。

【讨论】:

我在问除了ORM之外是否还有其他的数据访问抽象。除非每个人都将 ORM 用作“所有比原始 SQL 更高级别的东西”的包罗万象,否则人们肯定有其他想法来封装对数据库的访问。 也许吧,但是如果您查看所有不同的 ORM 解决方案,您会发现它们之间存在很多种。例如,比较 LINQ、Ruby-on-Rails ActiveRecord 和 Sybase 的 DataWindow.NET - 都可以视为“ORM”,但每个都使用自己独特的方法。 @swampsjohn 查看 github.com/craigmichaelmartin/sql-toolkit 作为非 ORM 数据访问库的示例。【参考方案2】:

我正在或多或少地按照你所说的方式工作。我认为与数据存储相关的工具随着时间的推移变得越来越复杂,而不是更简单、更实用。

所以,为了增加复杂性,这类事情必须简单到:

    获取指向数据的东西 用它来处理数据(查询或修改)

您用来与数据交互的东西应该对您正在使用并完成的数据存储进行某种(透明)调整。

翻译的东西可能听起来有点像 ORM,但我说的是更通用的东西:

某种内部实现与您正在使用的任何东西进行通信(类似于 JDBC 驱动程序,但不需要使用 SQL)

某种将数据转换为 java 对象的映射(或多或少类似于 ORM)

我开发的这些概念的实现是针对 java 的,您可以在 http://www.bryghts.com 看到更多内容

目前,我只为与 SQL 相关的数据源开发了一个引擎,但它已准备好独立于它。

【讨论】:

抱歉,您的链接已失效。

以上是关于数据访问层中标准 ORM 的替代方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Linux 上 DTrace 的替代方案是啥? [关闭]

.Net 2.0 的微 ORM? [关闭]

Azure 云服务(经典)的替代方案是啥? [关闭]

radiansToVector 和 randomInRange Objective-C 函数的 Swift 替代方案是啥? [关闭]

Qt 对于我的带宽上限来说太大了。我的替代方案是啥? [关闭]

Apache Camel 的替代品是啥 [关闭]