在讨论hibernate和其他ORM时,ORM的福音传播者会像数据库的汇编语言一样谈论SQL.
我想很快就会断言这一点,但我想在不久的将来可能是真的,不确定.
更新:我是指这个比喻是指SQL是装配什么ORM是C /的Java/C# .当然,完全类比是不可能的.问题是,如果将来使用更强大的计算机,开发人员将只使用ORM(或类似ORM)而不是SQL.
绝对不.
汇编语言是一种非常低级的语言,您可以指示处理器准确地执行操作,包括您要使用的寄存器等.
SQL是一种非常高级的语言,您可以在其中描述所需的语义,然后查询优化器决定如何执行它,因此您甚至无法控制执行的内容.它是一种非常强大和灵活的语言,任何ORM最多只能提供一个(相当小的)子集.
您会注意到.NET框架最近引入了LINQ,这是一种将高级SQL类结构引入C#和VB等语言的方法.而不是像汇编程序一样,很容易认为SQL在比大多数主流编程语言更高的抽象层次上工作.
我听过很多关于关系和OO之间阻抗不匹配的b*s.
我的回答一直是确实存在一个非常大的阻碍不匹配 - 在niave inflexable"一切都是一个对象而只是一个对象"之间,以及奇妙的灵活和复杂的"数据描述现实世界的东西;这些数据可以组合在不同的尚未知的方法来产生数学上可证明的结果".
OO不是唯一的水果家伙.
不,关系代数是数据库的"汇编代码".
SQL是"C代码",可读性和足够接近"硬件",能够胜过所有其他高级语言,只要你知道你在做什么:-).