zoukankan      html  css  js  c++  java
  • ORM是否降低了灵活性?

    第一个疑问是,如果采用ORM,那么是否还需要存储过程?

    存储过程的用处不仅仅是效率的提升,更重要的应该是提升了数据库对于系统中数据访问层的清晰度,数据库提供给数据访问层的,不再是一个通用的可以执行SQL语句的入口,而是更像接口函数一样的存储过程。

    但是,ORM的出现,使得数据访问层在系统中的作用大大降低,由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。存储过程的作用也就变得模糊起来。

    想想ORM诞生的一个原始动力,使我们可以在不需要了解低层数据库的基础上,就可以直接利用它,而不需要再去了解SQL这些数据库的东东。(Java环境中著名的Hiberate的意思就是冬眠,让数据库和SQL语句冬眠。)而再去写一个个的存储过程,反而违反了ORM的初衷。

    OK,于是再引出第二个问题。如果我们在系统中全面采用ORM访问数据库(在.Net Framework 1.2中,这叫Accessing data with ObjectSpaces替代Accessing data with Ado.net),是不是降低了我们系统的灵活性了呢?

    在实际的系统中,每个数据层决不仅仅就只是那统一的几个方法(返回所有数据、根据ID返回数据,根据Parent的ID返回Child数据,根据ID更新数据....等等...),为了让它工作得更好,我们总会根据具体的情况增加一些必要的方法(根据××返回记录行数...)或更特殊的方法。在这样的场合,ORM显得很笨拙,要实现同样的效果,需要费更多的周折。

    不知大家怎么看待这个问题,有何看法和见解?哇,过十点半了,闪人,回家乐......

  • 相关阅读:
    Log4Net使用指南
    构建Asp.Net2.0 GridView复合多层表头的几种方法
    javaScript中如何定义类
    是不是silverlight 2 的bug
    领悟 JavaScript 中的面向对象
    web拖动Drag&Drop原理
    一个不错的js验证框架
    MySQL中文参考手册
    高效实现数据仓库的七个步骤
    什么是ARP?如何防范ARP欺骗?
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436687.html
Copyright © 2011-2022 走看看