三层结构的划分
最近总在想三层结构的划分问题,外观层好办了,就是界面。关键在于业务层和数据访问层的划分,我想不太明白。
按照c/s结构来说,大多是业务逻辑和数据库的访问都写在客户端,数据库端可能之处理一些计算复杂的存储过程。
现在3层结构,我就弄不明白了。
三层结构的数据访问层究竟要干些什么。数据访问层要负责根据业务层提出的sql语句来返回结果或者更新数据库吗?这样的话,具体的sql语句是要写在业务层,根据业务的不同传递不同的sql语句吗?那数据访问层就是做一个公用的类,类里面的方法只是执行这些sql语句吗?如果是这样的话,假设可以作出一个很完善的类,里面根据传递的sql语句、参数完全可以得到你想要的结果的话,是不是在这个数据访问层,如果不更换数据库的话,就可以做到各个项目中都可以用这个数据访问层呢?
举个例子来说:
表示层,业务层方法get需要从数据库表A中提取a,b,c三个字段,数据访问层有一个执行sql语句的方法execute(sql,ref),这样的话表示层调用业务层的get方法,业务层传递相应的sql语句select a,b,c from a和参数..调用数据访问层的execute方法来获取相应的信息。不知道这样对不对。如果是这样的话,那么数据访问层真的可以共用了吧。还有个问题就是,业务层决不是那么简单的用几个sql语句就能解决的,需要很多的判断,而判断过程中,就难免会遇到select,update等sql语句,而这些sql语句必须用到一个事物一起成功或者失败。这样的话,凡是执行sql语句的地方就要调用数据访问层的公共方法,很难做到用同一个事务。那么这样的话,是不是就得使用存储过程来做,通过数据访问层来执行存储过程,业务层调用数据访问层的执行存储过程的方法呢?
因为一直没有理解明白3层结构的划分,所以表达的可能不是很清楚,请大家多费费心。如果谁能有一个简单一点的,3层结构明确一点的例子给我,就太感谢了。
我的邮箱yuxin2526@yeah.net
QQ:349886828