今天搜索一个问题,偶然看到论坛中一篇老文,讨论得很激烈:
不显示删除回复显示所有回复显示星级回复显示得分回复 一个关于三层里的数据层的疑惑——SQL语句算不算业务逻辑?[
http://topic.csdn.net/u/20070430/08/da7d50dc-9c7f-43a2-89a7-7a3fda613b69.html
看了之后,不得不再说一说,有很多初学的同学都存在误解,困惑,这里说一下我的总结:
1,SQL语句,只应该放到DAL层,也就是
数据访问层;
SqlHelper等等对数据进行CRUD的东西,应该算作系统框架层的东西,不是三层架构中的数据访问层,可以算作“
数据持久化层”
数据库,这个应该叫做“
数据存储层”
2,业务层,不能有任何SQL语句出现,它是处理领域对象的,或者说是领域模型的加工厂;
3,Model,严格来说不能算作一个层,它是一个横跨UI,BLL,DAL层的东西,或者说是数据容器,BLL通过DAL将数据装进Model,然后将Model送给 UI;
4,UI,这个不用多说了,你懂的。
使用
PDF.NET数据开发框架,可以很自然的理解上面的层次结构:
1,在UI层,使用Model对象和框架提供的UI控件;
2,在BLL层,使用OQL来查询Model,并进一步加工;
3,在DAL层,使用SQL-MAP来存储所有的复杂SQL查询,并提供代码工具将它映射为SqlMapDAL层代码。