数据层应该分为两个部分,这样可以更好的“分工”,各自研究自己的功能

     数据层应该分为两个部分(并不是说一定要变成两层)第一个部分是处理SQL语句,包括存储过程的名称,存储过程的参数(一下的SQL语句都包含存储过程名称和存储过程的参数);第二部分是传递SQL语句的

     我们先说第二部分,这个最典型的就是SQLhelp。他的职责就是接收SQL语句,然后通过ADO.net传递给数据库,如果是select语句的话,需要返回记录集,记录可以放在DataTable里面,也可以用DataReader。但是放不放在实体类里面不是第二个部分的职责。

     有一些tx(包括我在内)会写自己的help,自己写的自己用这舒服嘛,基本功能大概也就是我上面说的这些。

     这个部分还以一个职责,那就是要支持多种数据库!不过这个也不难,在ADO.net2.0的支持下,也是很简单的。

第一部分就是处理SQL语句的部分,比如我要添加一条新闻,那么就要有这样一条类似的语句

“insert into News (NewsTitle,NewsContent) values (@NewsTitle,@NewsContent) ”。

那么这样的sql语句是如何获得的呢?这个就是第二部分要处理的事情。

     这里的变化就有很多了。可以自己手写,可以拼接,可以使用LinQ 、Hibernate等,当然有些也直接把第二部分包含进去了。

     相信有好多人就是这么做的,但是也会有些人把这两个部分完全混合在一起了。LinQ 、Hibernate这一类的不知道内部是如何处理的,相信也会由一个明确的区分吧。

     分成两个部分的好处就是可以进一步的“优化”(这个词不太准确,没想到太好的词语)。第二部分很容易就做成通用的,这样就大大的减少了代码量,和发开时间,出现bug的概率也会大大降低。

     第一部分就可以只考虑如何处理SQL语句了,比如不同的数据库的情况下,如何写sql语句。比如在添加、修改的情况下如何处理sql语句,insert into ...... 是不是所有的数据库都支持。尽量让一种sql语句可以“适合”多种数据库。

     如果都支持的话,那么添加数据的情况我是不是只需要写一种SQL语句就可以了,一种SQL语句就可以应对多种数据库。因为这样的话,添加数据的部分我就不必要先定义一个接口,然后在SQL Server 实现一遍接口,Orcale再实现一遍接口,Access再实现一遍接口了。sql语句都是一样的呀(对于添加来说都是insert into ),这样代码量就有节省了一大块。

     同理,修改数据(Update)、删除数据(delete)是不是也可以同样处理呢?

     剩下来的就是最麻烦的分页了。其实这个也简单,快上班了,先不写了。

     对了,还有一些地方,统计报表了、导出数据了、其他一时没先到的地方,这些是不是都可以使用类似的思路来处理一下呢?如果可行的话,那么代码量会减少70%(和petshop相比)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

order by 主键id导致全表扫描的问题

一 简介 在检查某业务数据库的slowlog 时发现一个慢查询,查询时间 1.57s ,检查表结构 where条件字段存在正确的组合索引,正确的情况下优化器应...

1492
来自专栏杨建荣的学习笔记

关于权限管理的实用脚本(r4笔记第94天)

在工作中,可能会接触到很多的环境问题,对于权限问题,总是感觉心有余力而力不足,环境太多了,可能在赋予权限的时候会出差错, 比如下面的场景,数据都存储在owner...

3134
来自专栏JAVA高级架构

优化 MySQL: 3 个简单的小调整

我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能...

3456

使用 Excel 分析 CloudStack 使用记录

注:本文最初由 David Nailey 在 Build a Cloud 博客上撰写。

2169
来自专栏北京马哥教育

Mysql分库分表方案

为什么要分表 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询...

4516
来自专栏沃趣科技

初相识 | 全方位认识 sys 系统库

前阵子,我们的"全方位认识performance_schema"系列为大家完整的介绍了performance_schema系统库。在我们的发布计划中为什么要把p...

2203
来自专栏性能与架构

mysql join和sort的buffer

参数查看命令 SELECT @@join_buffer_size; SELECT @@sort_buffer_size; join_buffer_size 当...

3664
来自专栏IT大咖说

知数堂联合创始人叶金荣:MySQL 5.7新时代

摘要 MySQL 5.7版本新增了很多特别实用的功能,截止目前已经发布5.7.17版本,也越来越成熟了,而且Group Replication也GA了。就让我们...

3966
来自专栏Java帮帮-微信公众号-技术文章全总结

MySQL分表3种方法【面试+工作】

MySQL 分表3种方法 摘要: 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会卡在那儿了,那么分表的目的就在于此,减...

3834
来自专栏PHP在线

优化 MySQL: 3 个简单的小调整

我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能...

1524

扫码关注云+社区

领取腾讯云代金券