我对软件开发的世界比较陌生。我目前正在进行一个相当大的项目,这是一个体面的OO代码 - 主要遵循域驱动设计原则。然而,在理论上这听起来很好,但实际上整个对象关系阻抗都很糟糕,这意味着只使用ORM层,系统的某些部分非常慢,除非我们编写优化的SQL查询来覆盖这些情况。此外,有时我们似乎被卡住,试图看看我们是否应该基于SQL的性能与面向对象的原则对域进行建模。没有ORM的域丰富的应用程序
这让我问这个问题 - 这是大多数应用程序的构建方式吗?意义 - 是的,面向对象很好,但是我发现很难相信,与这个对象关系不匹配相关的所有问题,这是构建应用程序的最佳方式吗?我能想到的另一种方法是抛弃ORM,只进行域建模,直接用手直接编写原生SQL查询。我想知道是否实际上有足够大小的软件系统以这种方式构建。
对不起,如果我听起来不错 - 但我是新的,想知道还有什么其他的方法。
曾与ORM的和普通的SQL + JDBC/ibatis一起工作,我仍然喜欢写我的查询或甚至更好,让我的DBA优化我的查询,这些参数听起来更像是借口不学习(propper)SQL – Harima555 2011-02-03 18:40:26
实际上使用ORM并不意味着你无法控制生成的SQL,或者你不必拥有一个好的数据库设计。此外,如果您需要特殊技能来编写SQL查询,通常意味着您的数据库模式已损坏。模式应该使得最频繁的查询易于编写(并且可以快速执行)。当我使用ORM时,我创建了我的模式,使得由我的ORM生成的查询简单快捷。这不是火箭科学。 – 2011-02-03 20:00:15