应该说,SQL语句,真的心很强大。但是我一直都觉得比较奇怪。为什么要用SQL语句作为介质。
而不是直接暴露数据库中的一些方法给我们调用。SQL的好处:
强大,灵活,传输量也不是很大。但是也有坏处:
解析SQL。
SQL标准不统一。
每次用ado.net 都觉得很烦。
要写很多SQL,要写很多方法...我几次尝试,想把SQL语句封装到类里面,然后通过使用反射,直接接受对象,然后自动遍历对象,并实现怎删改查好处是不需要维护SQL语句和数据操作类了
只需要维护对象和,逻辑代码。但,一些复杂的逻辑还是一样要SQL。相当麻烦....
我觉得,要想提高生产效率 真的有必要,出现一个统一的中间层。
用方法替代掉所有的SQL语句。有没有童鞋有什么好的设计思路
——————————————————————————————————最近出现了,Repository模式,晕啊,我觉得最近出现的IOC,领域驱动,还有之前的ORM,等等都是因为SQL,SQL语句,关系数据库。SQL语句这个折磨了成千上万程序员的东西,什么时候才是该退出历史舞台的时候。
各位 不妨 讨论讨论,这方面的问题
sql数据库iocormNOSQL

解决方案 »

  1.   

    退不出的 不要以为人家在吹嘘no sql 就觉得他能取代sql 你得知道像sap peoplesoft siebel这些大型企业级应用 是没法不用sql的
      

  2.   

    Entity Framework不就是解决这个问题的吗。
      

  3.   

    EF和Linq本身还是过于复杂了,我看过有不少人写过的代码
    里面充满了Linq之类的。
    神啊,似乎那似乎只是把SQL放到了C#代码里面。
    而且EF也不太灵活,代码量也没减少多少。
      

  4.   

    让dba写好,然后你调用,要不然不写sql至少在我看来是一个梦,南柯一梦。
      

  5.   

    我觉得,需要一个人,一个产品出现并且改变时代,我没有那个能力。
    这个产品或许是一个开源的,没有SQL语句的,面向对象的数据库?
    抛砖引玉。等待大牛出现。
      

  6.   

    我想ndatabase 这个将会拯救我以及一些和我类似的他人。
      

  7.   

    其实.NET已经做得尽量让程序员远离自己写很多SQL代码的事了,可以拖放数据组建,简单勾勾选选就可以了,还有就是如这种整个数据库软件只写少量SQL代码就可以了.
      

  8.   

    亲,反射的效率实在是太低,能不反射尽量就别用。
    拼sql文还是老老实实的写吧,只要把sqlhelper这类的工具用熟了,套一套就行了。
      

  9.   

    对于简单的SQL语句,ORM确实减少不了多少代码量,仅仅只是对于IDE更友好而已,因为需求是一一对应的。对于复杂的需求组合,ORM可以实现关联关系的一次性处理,这个是SQL语句不可能做到的。
    另外一点,ORM可以为界面提供树状视图(你可以Answer.Question.User...),不是二维表格。如果要抛弃SQL语句,就不能以SQL功能为出发点来设计ORM,否则难以摆脱所谓的复杂的SQL语句。
    比如http://www.51nod.com/today.html#!type=all,实践证明没有SQL语句的项目做得更舒心。
    欢迎关注开源项目fastCSharp,将支持.NET2.0的lambda解析SQL,IDE最低支持vs2010。
      

  10.   

    这个想法不怎么现实吧!就是出现的这亲的数据模型,也还是要SQL的,我们现在的软件总是要对应数据。而数据的各种抽取、表示总会需要人去描述,不然软件的功能怎么具体体现出来呢?
      

  11.   

    OO适合逻辑建模,但是考虑到综合视图提供,OO明显不适合。起码你要做个综合报表,直接存储过程就比你OO来OO去要简单直白的多所以俺们不一棒子打死,尽量用其长处就好。OO的长处是抽象层策略控制比数据库好,局部逻辑性比OO好。而数据库的长处是多点视图,数据透视,数据挖掘比OO好
      

  12.   

    那需要好几家 的 数据库生产商,通过协商 在 利益一致的情况下 推出一个标准了....然后依靠这个 标准 统一 数据库的sql操作
      

  13.   

    我暂时都用Linq
    好像都能解决问题
      

  14.   

    我前段时间面试dba的时候,有一道题是谈谈sql的优缺点,当时我还不是很清楚怎么答,看了楼主的帖子才知道有这么多的缺点,受教了
      

  15.   

    要是都不用写SQL了,那会有很多人失业的哦
      

  16.   

    关系数据库之所以还存在,必然有其存在的价值,不是因为开发人员要简化开发流程,或者不想写复杂的SQL,就希望开发中不写SQL,。
      

  17.   

    因时制宜,因地制宜吧,模型确实解决了一些繁琐sql的问题,但对于效率来说,对于复杂的业务处理,那些模型显得有些单薄,无力
      

  18.   


    LINQ算不算呢?
    我自己没有用过LINQ。
      

  19.   

    做为一个程序员 写写SQL怎么啦 代码不也离不开与或非嘛!
      

  20.   

    作为一名码农我也很希望可以脱离sq语句,但是我发现只要你依然使用关系型数据库,你就必须会sql语句,这是没得商量的。
    正如网站前端要会html js css,数据库要会sql很奇怪吗?反而是希望使用数据库而又不想写sql的想法更奇怪。
      

  21.   

    替代不了的原因是数据处理的领域sql比程序代码更优秀。sql描述出来的是结果,你想要什么样的数据,你想要什么样的处理,具体怎么做是数据库内部来生成执行计划来处理,你只要描述出结果就可以了。可以试想一下一个10行的sql代码的执行计划,你用程序来写会写出多少行代码?验证这些代码需要多少人力和时间? 而且数据库还会根据数据的统计做出不同的最优执行计划,你的程序能做到这样吗?如果可以的话你已经写出一部分的数据库系统了。如果你想要的数据库的API也是像sql一样描述结果,而且数据库负责编译找出最优的执行计划的话,本质上和sql有什么区别?现有的框架只是解决了强类型的问题,不写sql不能算一个好处,如果一个没有完全理解这个框架人使用的话,会有很大的隐患,很多意想不到的bug,倒不如牺牲强类型来写sql。
      

  22.   

    我宁愿只写SQL不写代码在我做的好多项目中,代码基本粘贴,但是实际的东西还是SQL,各种统计,各种联合查询,还有就是。。类似触发器的需求,更多的操作数据库过程,存储过程编写变得尤为必要!
      

  23.   

    "而不是直接暴露数据库中的一些方法给我们调用。"
    有的啊,OCI就是oracle提供的开发接口。
    10年前我们做项目时就是先用oci封装数据库操作,具体的表一般会定义成类,所有数据库操作都封装成底层方法,复杂的业务逻辑都是一般是通过方法调用来实现的。
    从人力资源看,会写程序的多,但写得好sql的人少,所以项目中要避免维护复杂SQL或存储过程.
      

  24.   

    为了你一个小小的程序员,那些dba都要去吃s吗
      

  25.   

    身为一个程序员。不要嫌麻烦。只有程序员站起来了,那些用户才能安心坐下去用你的东西。机器有时是聪明的,有时又是不够智能的。你需要告诉它做什么。SQL存在那么多年了,不能改变现状的。而且我觉得SQL已经够好用了。Java里面有JPA。实在不行就写接口吧。用JAVA的接口来操作数据。你发请求就可以了
      

  26.   

    一句话,RDBMS以及SQL的理论基础是数学,尤其是基于set theory和predicate logic。数学基础不是学习SQL的先决条件,而且SQL也不是100%的relational。但是通过理论知识去了解SQL绝对是帮助巨大的。SQL的精髓是what to do, not how to do。这一点和其他的procedural语言非常不同。只有理解这些才能真正的高性能的代码。要做到think in the way how relational engine thinks.
      

  27.   

    我觉得,我很享受写sql的过程。它很美丽。
      

  28.   

    中间插件很明显是不现实的,如果真有这个中间件 何不让DB厂商直接做相同接口呢
    直接开放sock接口就可以了 干嘛还要绕远路去拼sql语句再查询
      

  29.   

    ORM EF这些技术,在应用开发中确实能提升效率,我们公司都用了4年多的EF了。
    SQL还是数据库交互的核心,有些时候,有些东西用纯原生的SQL是有它的道理。
    两者兼顾,发挥各自的优势才是王道!
      

  30.   

    真的有比sql更好的么?具体项目你可以自己写几个函数或类封装,但是普遍来说还是sql最好,最灵活,最简洁的啦,君不见无数恶心的封装,用起来或学习起来都比sql恶心无数倍,并且性能低下
      

  31.   

    sql轻便灵活高效,在关系数据库层面是无法被取代的。那些所谓的厚封装,面向对象的orm,低效,学习门槛高。了解不透的话,会有极大的隐患,最后死都不知道怎么死的。
      

  32.   

    嗯,公司主用hibernate来实现数据库的操作,但是会有效率问题,而且不太方便,但是好处是可以实现跨各种数据库。