为什么面向对象的数据库失败?
我发现令人惊讶的是:
foo bar = new foo();
bar.saveToDatabase();
Run Code Online (Sandbox Code Playgroud)
迷失方向:
foo bar = new foo();
/* write complicated code to extract stuff from foo */
/* write complicated code to write stuff to database */
Run Code Online (Sandbox Code Playgroud)
相关问题:
首先,我不相信他们完全"失败".据我所知,仍然有一些,并且它们仍然被几家公司使用.
无论如何,可能是因为我们想要存储在数据库中的大量数据本质上是关系型的.问题是,虽然是,OO数据库更容易集成到OO编程语言中,关系数据库使定义查询更容易,以及存储的数据之间的关系.这往往是复杂的部分.
有无数的现有应用程序将其数据存储在关系数据库中.这些数据是这些公司的生命线.他们共同投入了大量资金来存储,维护和报告这些数据.将这些无价的信息转移到一个根本不同的环境中的成本和风险非常高.
现在考虑ORM工具可以将现代应用程序数据结构映射到传统的关系模型,并且几乎可以消除任何迁移到OODBMS的动机.它们为非常昂贵的高风险迁移提供了低风险的替代方案.
因为,尽管ODBMS广告中充斥着关于ORM系统的贬义语言,但是使ORM完成工作并没有那么难,并且没有切换到纯ODBMS的所有各种命中.
实际发生的是你的第一个代码示例获胜,它恰好位于RDBMS持久层上.