6:还有些:存储过程可以防止sql注入
这个是当然的,毫无争议。因为用的是参数化方式,你不能随意拼接字符串,参数化方式能够帮助我们防止大多数的sql注入。在ado.net中为我们提供了很好的参数化支持,使用sql我们同样可以做到,再加上一切开源的安全组件的过滤。
最后存储过程并不是万恶的,他有他的应用场景,对于复杂逻辑如报表的场景,我会毫不犹豫的放弃ORM,选择它,因为orm不能满足这种复杂查询,但是准确的说我选择的是大量的T-SQL或者是P-SQL,存储过程就是一堆sql子程序的固定格式。我觉得可以完全采用ibatis.net方式的xml配置,更爽些。选择存储过程是由于复杂查询业务,我相信大家也不会为了一些复杂的统计把全表数据加载到内存吧。存储过程开发技术流行与2005前数据为中心的开发模式,在现在的模式,工具,技术下显得有些苍老,但并不是一无是处。你也可以完全采用基于存储过程的开发模式开发出很好的系统。