在哪些领域中,这些软件架构中的每一个都会有优劣之处?
哪些关键要求会促使您选择其中之一?
请假设您有可以编写良好的面向对象代码和良好的数据库开发的开发人员。
另外,请避免神圣战争 :) 所有三种技术都有优缺点,我想知道在哪里使用哪种技术最合适。
哪些关键要求会促使您选择其中之一?
请假设您有可以编写良好的面向对象代码和良好的数据库开发的开发人员。
另外,请避免神圣战争 :) 所有三种技术都有优缺点,我想知道在哪里使用哪种技术最合适。
这些工具都提供不同的抽象层次以及不同的行为覆盖点。这些都是架构选择,并且所有架构选择都依赖于技术、控制和组织之间的权衡,无论是应用程序本身还是它将部署的环境。
如果你正在处理一个DBA“统治全局”的文化,那么基于存储过程的架构将更容易部署。另一方面,管理和版本控制存储过程可能会非常困难。
代码生成器在使用静态类型语言时表现出色,因为您可以在编译时而不是运行时捕获错误。
ORM适用于集成工具,在这些工具中,您可能需要根据安装情况处理不同的RDBMS和模式。更改一个映射,您的应用程序就可以从适用于Oracle上的PeopleSoft变为适用于SQL Server上的Microsoft Dynamics。
我见过使用生成的代码与存储过程进行接口的应用程序,因为可以调整存储过程以避免代码生成器的限制。
最终,唯一正确的答案取决于您要解决的问题以及解决方案需要执行的环境。其他任何答案都是在争论“potato”正确的发音。
我想加上我的两分钱:
存储过程
ORMs
代码生成器
我认为每件事情都有利弊,很多取决于你的架构。话虽如此,我尽量在有意义的地方使用ORM。很多功能已经存在,通常它们有助于防止SQL注入(而且有助于避免重复发明轮子)。
请参阅有关此主题的其他两篇文章(动态SQL vs存储过程vs ORM),以获取更多信息
动态SQL vs存储过程
哪个更好:Ad hoc查询还是存储过程?
ORM vs存储过程
为什么NHibernate生成的参数化SQL与存储过程一样快?
存储过程
ORM(对象关系映射)
至少有一些ORM允许映射到存储过程
代码生成