没有ORM的域丰富应用程序

时间:2011-02-03 17:47:49

标签: database-design orm domain-driven-design oop

我对软件开发世界相对较新。我目前正在进行一个相当大的项目,它是一个不错的OO代码 - 主要遵循领域驱动设计原则。然而,通常这在理论上听起来很棒,实际上整个对象关系阻抗非常糟糕,这意味着只使用ORM层系统的某些部分很慢,除非我们编写优化的SQL查询来覆盖这些情况。此外,有时我们似乎陷入困境,试图看看我们是否应该根据SQL的性能与OO原则对域进行建模。

这让我问这个 - 这是大多数应用程序的构建方式吗?含义 - 是的,面向对象很好 - 但是我发现很难相信与此Object关系不匹配相关的所有问题,这是构建应用程序的最佳方式吗?我能想到的替代方法是抛弃ORM并进行域建模,并直接手动编写本机SQL查询。我想知道是否实际上有这种方式构建了足够大小的软件系统。

如果我听起来很难听,我很抱歉 - 但我很新,并且想知道其他方法是什么。

2 个答案:

答案 0 :(得分:3)

不要为承认显而易见而道歉。那些经验丰富的人往往完全没有认识到你所拥有的东西:由于你指定的原因,ORM是糟糕的工程。

但我不想陷入咆哮。反对使用嵌入式SQL的论点范围从样式,“我不希望我的代码中的垃圾”,嗯,风格,“SQL是丑陋的”。但它有效,速度快,而且工程性很好。

答案 1 :(得分:2)

可以同时使用两者。

老实说,对于简单的单个记录修改和视图(包括相关实体的显示),ORM生成的代码与我手写的几乎相同。所以优势当然是我必须写它。此外,优雅地处理次要模式修改。

对于其他一切,纯SQL是王道。

我认为只要不生成明显不合格的版本,就会生成可以生成 的任何代码。我认为这是我的关键点:大量的应用程序的数据库代码,可以通过ORM进行交换,并且仍然与数据库专家编写的手工制作的sql代码一样好。