当前位置:主页 >澳门威尼人斯

澳门威尼人斯:我的CMS开发记2 该ORM就ORM该写SQL还是写SQL

发布时间:01月11日 阅读:676



啊,是ORM照样SQL,这是个问题.

先扯段题外话,我原本公司的产品是java和.net共存,java部分是外包的,于是么各位也可想而知,两派法度榜样员碰到一块会发生什么工作-____-;;好在大年夜家都是文明人, 口水战之后,各取所需,我也是从他们那里得来的MV澳门威尼人斯C,HIBERNATE等等框架方面的观点,从而才得知天下上还有这样的编程思惟。当然他们也被本人惊寰宇泣鬼神的SQL查询 功力所震动(先吹吹法螺再说),无数看似繁杂的报表问题在sql语句的魔力下说笑间灰飞烟灭,两者各有各的好 处.

那么我在开拓的时刻就碰到这样的问题,ORM能极大年夜地解放临盆力,在做后台掩护的时刻,那代码是无比简洁,而且再也不用去担心什么字段拼错啊,漏字段啊什么什么 紊乱无章的破事,只要去管必要实现的功能即可。我们以文章宣布模块为例,应用ORM后的开拓历程是这样的,我起开创建 文章 的实体类,反正不外乎便是什么标题啊澳门威尼人斯,内 容啊,副标题啊,XXOO就那些器械,然后,连表都不用建,直接用实体类就可以天生表,增删查改一应俱全。在展示的时刻,应用orm的查询,连sql注入都自动给你防了,看 起来真不错。

恩,是不错。然则这里却有个非常严重的问题,文章录入是当然没有问题,可是在文章列表页,搭档就来了。首先第一个大年夜问澳门威尼人斯题,便是查扣问题。文章列表页,只必要显 示文章标题即可,大年夜段大年夜段的文章内容根本就用不着去查出来。去查这些器械无疑是极大年夜影响效率。然则这个时刻你就会发明:应用orm是处处受制,他要么便是根本就没法 定制字段,要么便是异常麻烦。以我应用的Castle ActiveRecord(内部调用Nhibernate)为例,不错他确凿可以应用本地sql语句,然则你应用的话必须把字段整个写全, 而且时常会碰到莫名巧妙的问题。着实我的要求异常简单,我就只是想取前10条标题,干嘛非要大年夜动兵戈绕一个大年夜圈子?好吧反正不就10条则章么,挥霍也澳门威尼人斯挥霍不到哪去, 我忍了。

然则,假如现在我加点料,我要从某个分类,或者某几个分类里头取头几条,还要斟酌置顶,保举等等身分,这下麻烦大年夜了。activerecord那可怜的一点点查询前提压根 没法满意如斯繁杂(虽然实际上不繁杂)的查询,好吧那我用HQL,颠末一番钻研,hql是写出来了,可是他自动翻译成的sql语句其实是比手写的sql要差了不少,而且应用子 查询时澳门威尼人斯写法之晦涩难解其实是。。。写过就忘了。

于是颠末苦楚的决定之后,我抉择,嘿嘿,遭小看就遭小看,同时应用sql和orm。orm用于网站后台掩护,前台展示,照样应用本人苦练多年的SQL查询,嘿嘿,做人不能 忘本是不是,当然了,咱也不醒目满页面拼SQL这种太失队的工作,适当的封装一下,把展示用的页面和数据直接分手开,代码写得清楚一点,也不见得就坏到哪里去,不过 履行效率却是上来了。

因为应用了ORM框架,今朝可以同时应用sqlserver和access,其他数据库尚未测试,那么直接用sql查询的页面也必要筹备一个数据库造访层,同时支持sql和access或其 他,这个大年夜家都邑,没啥好说的,根据我曩昔做财务软件实施掩护的履历,着实呢标准的sql语句各大年夜数据库也都差不太多,子查询,连接等语法都是通用的。照样那文章列 表来说,无非便是

select top 10 title from article where ....这类写法,简单清楚明了。

就select语句来讲,绝大年夜多半需求都能写出各类数据库通用的写法,纵然其实是找不到通用写法,那么这时刻采纳反射等伎俩来同时支持多半据库,反正sql语句的效率 必然比orm来得高啦。

着末总结一点便是,不要在一棵树悬梁逝世,最关键的是,软件的布局要清晰,履行效率要知足



上一篇:澳门威尼l斯人网址:嫩嫩的彩椒炒牛肉
下一篇:澳门威斯尼平台9499:唐人街探案阿温在酒吧唱的歌叫什么? 《刺激2005》情歌串烧引观众飙泪